我最近将我的OS X更新为Mountain Lion。不幸的是,FreeBSD切换到了一个不支持OpenMP的编译器套件(llvm / clang),我需要它,并且Apple将该套件设置为默认的编译工具。
幸运的是,OS X 10.8包含一个旧的gcc 4.2编译器,仍可用于某些遗留代码。
我使用cmake(v2.8)构建程序。为了使用gcc编译器,我首先尝试在CMakeLists.txt脚本中设置两个变量。更具体地说,我设置了CMAKE_C_COMPILER
和CMAKE_CXX_COMPILER
。但是,设置这两个变量没有任何效果:cmake继续使用不支持OpenMP的llvm编译器。
然后我尝试设置两个环境变量CC
和CXX
(在.profile / .bashrc脚本中),指向用于CMake变量的相同编译器。通过使用这两个变量,我能够编译我的源代码。
我的问题是:两个CMake变量(CMAKE _..._ COMPILER)有什么意义?我该如何使用它们?
感谢。
答案 0 :(得分:8)
确实可以使用这些变量,但必须在之前设置它们自动检测编译器。通常使用命令行或缓存初始化脚本来执行此操作:
# by setting CC anc CXX
CC=gcc-4.2 CXX=g++-4.2 cmake ...
# by passing the definitions of CMAKE_{C,CXX}_COMPILER to cmake directly
cmake -DCMAKE_C_COMPILER:FILEPATH=`which gcc-4.2` -DCMAKE_CXX_COMPILER:FILEPATH=`which g++-4.2` ...
# by passing a cache-initialization script
cmake -C init_cache.cmake
文件init_cache.cmake
包含
set(CMAKE_C_COMPILER CACHE FILEPATH /usr/bin/gcc-4.2)
set(CMAKE_CXX_COMPILER CACHE FILEPATH /usr/bin/g++-4.2)