以下是设置:
$ cmake --version
cmake version 3.4.3
我希望它能够选择这些编译器:
$ ll /dist/gcc-4.8.2/bin/gcc
-rwxr-xr-x 3 root root 3112176 Nov 8 2013 /dist/gcc-4.8.2/bin/gcc
$# /dist/gcc-4.8.2/bin/gcc --version
gcc (GCC) 4.8.2
$ ll /dist/gcc-4.8.2/bin/g++
-rwxr-xr-x 4 root root 3121866 Nov 8 2013 /dist/gcc-4.8.2/bin/g++
$ /dist/gcc-4.8.2/bin/g++ --version
g++ (GCC) 4.8.2
...不是系统编译器:
$ ll /usr/bin/cc
lrwxrwxrwx. 1 root root 3 Nov 20 2014 /usr/bin/cc -> gcc
$ ll /usr/bin/gcc
-rwxr-xr-x. 2 root root 263952 Nov 21 2013 /usr/bin/gcc
$ /usr/bin/cc --version
cc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)
ll /usr/bin/c++
-rwxr-xr-x. 4 root root 267888 Nov 21 2013 /usr/bin/c++
$ /usr/bin/c++ --version
c++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)
当我运行cmake时,它会选择系统编译器:
$ cmake CXX=/dist/gcc-4.8.2/bin/g++ CC=/dist/gcc-4.8.2/bin/gcc ~/source/
-- The C compiler identification is GNU 4.4.7
-- The CXX compiler identification is GNU 4.4.7
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
这不奇怪吗?
答案 0 :(得分:2)
你正在做什么是行不通的,因为CMake不理解你使用的旗帜 您需要在调用CMake之前指定环境变量定义:
$ CXX=/dist/gcc-4.8.2/bin/g++ CC=/dist/gcc-4.8.2/bin/gcc cmake ~/source/
这是正常的shell语法,用于为以下命令指定环境变量。
但是,更正确的方法是从命令行定义CMake变量:
$ cmake -DCMAKE_CXX_COMPILER=/dist/gcc-4.8.2/bin/g++ -DCMAKE_C_COMPILER=/dist/gcc-4.8.2/bin/gcc ~/source/
根据CMake FAQ:
对于C和C ++,设置CC和CXX环境变量。不保证此方法适用于所有生成器。 (具体来说,如果你试图设置Xcode的GCC_VERSION,这个方法会混淆Xcode。)
另外,在切换编译器时要小心删除完全目标目录,因为如果某些生成的CMake文件仍然存在,则根本不会有任何方法。