linux下使用cmake如何指定编译器路径

您所在的位置:网站首页 cmakelists指定编译器 linux下使用cmake如何指定编译器路径

linux下使用cmake如何指定编译器路径

2023-08-23 07:50| 来源: 网络整理| 查看: 265

近期需要使用cmake编译项目。而项目要求c++11支持。在服务器中,有多个gcc编译命令同时存在。问题就出在这里,cmake产生的makefile文件,执行make后,一直提示不支持c++11的语法。明显就是调用的g++命令版本不对。

仔细查看了下cmake时的输出结果,发现如下重要信息:

– The C compiler identification is GNU 4.4.6 – The CXX compiler identification is GNU 4.4.6 – Check for working C compiler: /usr/bin/cc – Check for working C compiler: /usr/bin/cc – works – Detecting C compiler ABI info – Detecting C compiler ABI info - done – Check for working CXX compiler: /usr/bin/c++ – Check for working CXX compiler: /usr/bin/c++ – works – Detecting CXX compiler ABI info – Detecting CXX compiler ABI info - done 我们可以看到,这里面主要是编译器的路径检查。而这里,检查到的gcc命令的路径是 /usr/bin/c++ 而这里的c++,其实是g++,不知道是系统改名的还是管理员手动改名的。查看了下它的版本: 4.4.6,果然是不支持c++11的版本。也就是说,如果我们不指定编译器,那么,cmake会使用系统原生的编译器。

现在,问题是找到了,那么如何解决呢?在cmake生成makefile文件时,指定编译器。How?

1.设置环境变量 export CC=gcc-4.2 CXX=/usr/bin/g+±4.2 其中,CC是设置gcc编译器,而CXX是设置g++编译器。这个方法不适用于Xcode

2.使用 cmake -D 在命令行下,使用-D 设置CMAKE_FOO_COMPILER 变量值为有效的编译器名称或者全路径。如

cmake -D CMAKE_C_COMPILER=gcc CMAKE_CXX_COMPILER=g++ /path/to/your/source 3.(避免)使用set() 使用set()在CMakeLists.txt 文件中设置CMAKE_FOO_COMPILER 变量值为有效的编译器名称或者全路径。必须在任何语言之前调用set(比如projuect()或enable_language())。

例如:

SET(CMAKE_C_COMPILER /usr/bin/gcc) SET(CMAKE_CXX_COMPILER /usr/bin/g++) 这个方法,在我的服务器中,无效。不知道是因为我的服务器问题,还是cmake开始不支持这个方法了。正如FAQ中所言,我们还是避免使用吧。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3