新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如何使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
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧