Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 如何让CMake在系统路径上使用默认编译器?_Compiler Construction_Cmake - Fatal编程技术网

Compiler construction 如何让CMake在系统路径上使用默认编译器?

Compiler construction 如何让CMake在系统路径上使用默认编译器?,compiler-construction,cmake,Compiler Construction,Cmake,目前,我从构建目录调用CMake,如下所示: CXX=“/opt/gcc-4.8/bin/g++”cmake 使CMake使用此特定编译器。否则,它将使用操作系统默认编译器 我的路径在所有其他路径前面都有“/opt/gcc-4.8/bin”。因此,有没有办法在“`CMakeLists.txt”文件中指定使用路径上的默认g++而不是预先添加环境变量 CMake尊重PATH环境变量的设置,但优先考虑通用编译器名称cc和c++。要确定CMake在UNIX下默认使用哪个C编译器,请运行: $ which

目前,我从构建目录调用CMake,如下所示:

CXX=“/opt/gcc-4.8/bin/g++”cmake

使CMake使用此特定编译器。否则,它将使用操作系统默认编译器


我的路径在所有其他路径前面都有“
/opt/gcc-4.8/bin
”。因此,有没有办法在“`CMakeLists.txt”文件中指定使用路径上的默认g++而不是预先添加环境变量

CMake尊重
PATH
环境变量的设置,但优先考虑通用编译器名称
cc
c++
。要确定CMake在UNIX下默认使用哪个C编译器,请运行:

$ which cc
< P>确定默认的C++编译器,运行:

$ which c++

如果在
/opt/gcc-4.8/bin
中生成指向
/opt/gcc-4.8/bin/g++
的符号链接
c++
,则默认情况下,CMake应该使用GCC4.8。

cc的位置而不是
c++
决定了CMake将使用哪个
c++
。例如,如果你有
/usr/local/bin/c++
但是
/usr/local/bin/cc
,那么cmake仍然会拾取
/usr/bin/c++
,而不是
/usr/local/bin/c++
。在这种情况下,在
/usr/local/bin/cc
处创建一个指向
/usr/local/bin/gcc
的符号链接将需要使用
/usr/local/bin/c++

另一种方法是将项目的语言显式设置为C++:


项目(foo-CXX)

好的,谢谢。结果是我运行的shell脚本弄乱了我的路径。接受这个答案是为了得到有用的信息“CMake尊重PATH环境变量的设置,但优先考虑通用编译器名称cc和c++”。谢谢;这很有帮助。不幸的是,当我添加这样的符号链接时,CMake还坚持从同一个目录中提取Python(尽管我想要的Python在我的路径的前面)。难道真的没有办法说服这件事仅仅是为了从我的路径中获取东西,就像从一开始的所有其他Unix实用程序一样吗?唉,是的,真烦人。如果项目是你自己的(或者如果你可以提交一个拉请求),你可以参考如何在你的代码> CMACHORM.TXT 中使用一对代码< FIDXProjial> /Cuth>来解决C和C++编译器从<代码> $PATH < /C>环境变量中获得的无链接链接。特别是在我们广泛使用的HPC环境中,我认为这是合理的默认行为,不幸的是,这不是CMake默认行为。