为什么CMake拒绝使用非默认编译器?

Chr*_*ris 1 cmake

我想检查我的C ++项目是否在旧版本的GCC上编译。因此,我已经安装了较旧的版本,并希望CMake使用它来编译我的项目。

关于更改编译器的CMake FAQ 告诉我这是正确的方法:

CC = gcc-4.4 CXX = g ++-4.4 cmake -G“ Unix Makefiles” ..

所以这是我输入的内容,CMake看起来运行良好:

chris @ chris-machine:〜/ projects / myProject / build $ CC = gcc-4.4 CXX = g ++-4.4 cmake -G“ Unix Makefiles” ..
-找到PythonInterp:/ usr / bin / python(找到版本“ 2.7.4”) 
-寻找包含文件pthread.h
-寻找包含文件pthread.h-找到
-寻找pthread_create
-寻找pthread_create-找不到
-在pthreads中寻找pthread_create
-在pthread中寻找pthread_create-找不到
-在pthread中寻找pthread_create
-在pthread中寻找pthread_create-找到
-找到的线程:TRUE  
-配置完成
-完成生成
-构建文件已被写入:/ home / chris / projects / myProject / build

但是,现在查看CMakeCache.txt,我发现:

// CXX编译器。
CMAKE_CXX_COMPILER:FILEPATH = / usr / bin / c ++

显然,CMake没有使用我指定的编译器。当我将此行更改为使用g ++-4.4并再次运行CMake时,它将创建一个无限循环:

chris @ chris-machine:〜/ projects / myProject / build $ CC = gcc-4.4 CXX = g ++-4.4 cmake -G“ Unix Makefiles” ..
-配置完成
您更改了需要删除缓存的变量。
配置将重新运行,您可能必须重置一些变量。
以下变量已更改:
CMAKE_CXX_COMPILER = /usr/bin/g++-4.4

-找到PythonInterp:/ usr / bin / python(找到版本“ 2.7.4”) 
-寻找包含文件pthread.h
-寻找包含文件pthread.h-找到
-寻找pthread_create
-寻找pthread_create-找不到
-在pthreads中寻找pthread_create
-在pthread中寻找pthread_create-找不到
-在pthread中寻找pthread_create
-在pthread中寻找pthread_create-找到
-找到的线程:TRUE  
-配置完成
您更改了需要删除缓存的变量。
配置将重新运行,您可能必须重置一些变量。
以下变量已更改:
CMAKE_CXX_COMPILER = /usr/bin/g++-4.4

-找到PythonInterp:/ usr / bin / python(找到版本“ 2.7.4”) 
// 等等...

为什么CMake不使用我指定的编译器,该如何解决?

小智 5

从链接您提供:

不能保证此方法适用于所有发电机

使用第二种方法:

cmake -G“您的生成器” -D CMAKE_C_COMPILER = gcc-4.4 -D CMAKE_CXX_COMPILER = g ++-4.4路径/到/您的/源

如果没有帮助:

  1. 使用绝对路径
  2. 别忘了清理构建目录中的所有内容