cmake和默认编译器

时间:2013-03-08 10:35:19

标签: c++ gcc g++ cmake

我最近将我的OS X更新为Mountain Lion。不幸的是,FreeBSD切换到了一个不支持OpenMP的编译器套件(llvm / clang),我需要它,并且Apple将该套件设置为默认的编译工具。

幸运的是,OS X 10.8包含一个旧的gcc 4.2编译器,仍可用于某些遗留代码。

我使用cmake(v2.8)构建程序。为了使用gcc编译器,我首先尝试在CMakeLists.txt脚本中设置两个变量。更具体地说,我设置了CMAKE_C_COMPILERCMAKE_CXX_COMPILER。但是,设置这两个变量没有任何效果:cmake继续使用不支持OpenMP的llvm编译器。

然后我尝试设置两个环境变量CCCXX(在.profile / .bashrc脚本中),指向用于CMake变量的相同编译器。通过使用这两个变量,我能够编译我的源代码。

我的问题是:两个CMake变量(CMAKE _..._ COMPILER)有什么意义?我该如何使用它们?

感谢。

1 个答案:

答案 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)