据我所知,更改 cmake 使用的目标 C++ 编译器的最佳方法是CXX
在调用 cmake 之前更改环境变量:
$ export CXX="clang++" && cmake --build
Travis CI 构建会根据构建的设置设置CXX
并CC
相应地设置。因此,如果您的.travis.yml
:
language: cpp
compiler:
- gcc
- clang
script:
- cmake --build
- ./bin/foo
第一次cmake
应该在后者上使用 GCC 和 Clang 不是吗?
相反,GCC 构建编译得很好(它是 cmake 使用的默认编译器),但 Clang 版本也使用 GCC:
0.01s$ echo $CC $CXX
clang clang++
命令“echo $CC $CXX”以 0 退出。0.02s$ $CXX --version
clang version 3.4 (tags/RELEASE_34/final) 目标:x86_64-unknown-linux-gnu 线程模型:posix运行: cmake -G "Unix Makefiles" -Wno-dev ../cmake
-- C 编译器标识是 GNU
-- CXX 编译器标识是 GNU
-- 检查工作 C 编译器:/usr/bin/gcc
-- 检查对于工作 C 编译器:/usr/bin/gcc -- 工作
-- 检测 C 编译器 ABI 信息
-- 检测 C 编译器 ABI 信息 - 完成
-- 检查工作 CXX 编译器:/usr/bin/c++
-- 检查工作 CXX编译器:/usr/bin/c++ -- 工作
-- 检测 CXX 编译器 ABI 信息
-- 检测 CXX 编译器 ABI 信息 - 完成
我什至尝试在调用之前再次设置这些变量:
- if [ "$CXX" == "clang++" ]; then export CXX="clang++" && cmake --build; fi
- if [ "$CXX" == "g++" ]; then export CXX="g++" && cmake --build; fi
我认为这没有多大意义......
这是使用 GCC 的成功构建,这里是(应该是)clang 构建。
我的问题是:如何更改 Travis CI 下 cmake 使用的编译器?
这是我的 .travis.yml。