CMake指定编译器目录详解-创新互联

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

专注于为中小企业提供网站设计、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业桐庐免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
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

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:CMake指定编译器目录详解-创新互联
网页链接:http://azwzsj.com/article/shdhp.html