c++ - sierra - macos omp
¿Cómo puedo hacer que CMake use GCC en lugar de Clang en Mac OS X? (3)
No puedo encontrar ninguna información sobre él, pero solo al revés (por ejemplo, cómo configurar CMake para usar clang).
Instalé gcc-4.8 utilizando brew, configuré todas las dependencias, encabezados, etc., y ahora CMake se niega a usar gcc.
Establecí mi perfil de bash con alias y entradas reales:
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
alias gcc=''gcc-4.8''
alias cc=''gcc-4.8''
alias g++=''g++-4.8''
alias c++=''c++-4.8''
Sin embargo, CMake se niega obstinadamente a usar gcc y, en su lugar, revierte al clang:
air:build alex$ cmake -DCMAKE_BUILD_TYPE=DEBUG ..
-- The C compiler identification is Clang 5.1.0
-- The CXX compiler identification is Clang 5.1.0
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
CMake no escucha CC
y CXX
. En su lugar, use CMAKE_C_COMPILER
y CMAKE_CXX_COMPILER
:
cmake -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ ...
Ver también la documentation .
Alternativamente, puede proporcionar un archivo de cadena de herramientas , pero eso podría ser excesivo en este caso.
Las versiones actuales de CMake no respetan las variables de entorno CC y CXX como cabría esperar. Específicamente, si son rutas absolutas a los binarios del compilador, parecen ignorarse. En mi sistema con un cmake 3.7.1 recién compilado tengo que hacer cmake -H. -Bbuild -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX
cmake -H. -Bbuild -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX
.
Como otros han declarado, no es una buena idea forzar la elección de un compilador dentro de su CMakeLists.txt; sin embargo, si esto es necesario para su caso de uso, así es como lo hace:
cmake_minimum_required(VERSION 3.5) # Or whatever version you use
# THIS HAS TO COME BEFORE THE PROJECT LINE
set(CMAKE_C_COMPILER "gcc")
set(CMAKE_CXX_COMPILER "g++")
# THIS HAS TO COME BEFORE THE PROJECT LINE
project(my_project VERSION 0.0.0 LANGUAGES C CXX)
En este caso, cmake fallará si no se encuentra el compilador indicado. Tenga en cuenta que debe establecer estas variables antes de la línea del proyecto, ya que este comando es lo que busca y configura los compiladores.
Solo para agregar que también hay una variable CMake "CMAKE_Fortran_COMPILER" para recoger GNU Fortran en lugar de clang fortran. Pero parece que falta en la documentation
cmake -DCMAKE_Fortran_COMPILER = / usr /.../ bin / gfortran-6.x.0