2

我最近将我的 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 编译器。

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

我的问题是:这两个 CMake 变量(CMAKE_..._COMPILER)有什么意义?我应该如何使用它们?

谢谢。

4

1 回答 1

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)
于 2013-03-08T10:49:32.000 回答