CMake指定编译器目录详解

如何使CMake在系统PATH上使用默认编译器?
问题1:
当前,我从构建目录中调用CMake,如下所示::

CXX ="/opt/gcc-4.8/bin/g++" cmake ..

报错原因:
使CMake使用此特定的编译器。 否则,它将使用操作系统的默认编译器。
提问:
我的PATH在所有其他内容的前面都有/opt/gcc-4.8/bin。 因此,除了在环境变量前添加前缀,还可以在CMakeLists.txt文件中指定在路径上使用默认g++的方法吗?
解答:
(1)手动指定编译目录:

-D CMAKE_C_COMPILER=/home/gcc7/gcc-7.3.0-install/bin/gcc
-D CMAKE_CXX_COMPILER=/home/gcc7/gcc-7.3.0-install/bin/g++

(2)cmakelist文件中指定编译目录
(3)path环境变量指定

// 此方法将环境变量配置在了PATH的最前面
export PATH=/home/gcc7/gcc-7.3.0-install/bin:$PATH

CMake支持PATH环境变量的设置,但优先使用通用编译器名称cc和c++。 要确定CMake在UNIX下默认使用哪个C编译器,请运行:
which cc
要确定默认的C ++编译器,请运行:
which c++
如果在/opt/gcc-4.8/bin中生成指向/opt/gcc-4.8/bin/g++的符号链接c++,则CMake默认情况下应使用GCC 4.8
问题2:
cc而不是c++的位置确定将使用哪个c++ 进行cmake
例:
如果您有/usr/local/bin/c++但cc编译环境目录为/usr/bin/cc,cmake仍会拾取/usr/bin/c++,而不是/usr/local/bin/c++
解答:
(1)在这种情况下,在/usr/bin/cc处创建指向/usr/local/bin/gcc的符号链接将使cmake使用/usr/local/bin/c++
(2)
另一种方法是将项目的语言显式设置为C ++:

project(foo CXX)

(3)

project(foo CXX C)

将优先使用C++编译器来编译
问题3:
当运行使用cmake的构建脚本时,我在构建过程中得到了以下输出:

[vcvarsall.bat] Environment initialized for: 'x64'
-- The C compiler identification is MSVC 19.27.29112.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe - skipped

我在另一个thread中看到这不是一个错误,我的代码继续编译,直到出现不同的错误,但是为什么输出会被“跳过”而不是“工作”?
解答:
这在较新的CMake版本中是正常的,因为会跳过测试,因为已知编译器可以工作,因为它能够确定ABI。
请参阅https://gitlab.kitware.com/cmake/cmake/-/merge_requests/4789

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值