更改C++;TravisCI下的cmake编译器 P>我知道改变Cube所使用的目标C++编译器的最佳方法是在调用CMAG:/P>之前更改 CXX/COD>环境变量。 $ export CXX="clang++" && cmake --build
Travis CI构建根据构建的设置相应地设置更改C++;TravisCI下的cmake编译器 P>我知道改变Cube所使用的目标C++编译器的最佳方法是在调用CMAG:/P>之前更改 CXX/COD>环境变量。 $ export CXX="clang++" && cmake --build,c++,cmake,travis-ci,biicode,C++,Cmake,Travis Ci,Biicode,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 铿锵铿锵+++ 命令“echo$CC
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铿锵铿锵+++
命令“echo$CC$CXX”以0退出 0.02s$$CXX--版本
clang版本3.4(tags/RELEASE_34/final)目标:x86_64-unknown-linux-gnu线程模型:posix 正在运行:cmake-G“Unix生成文件”-Wno dev../cmake
--C编译器标识为GNU
--CXX编译器标识为GNU
--检查C编译器是否工作:/usr/bin/gcc
--检查C编译器是否工作:/usr/bin/gcc--works
--检测C编译器ABI信息
--检测C编译器ABI信息-完成
--检查CXX编译器是否正常工作:/usr/bin/c++
--检查CXX编译器是否正常工作:/usr/bin/c++--works
--检测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的成功构建,以及(应该是)铿锵构建
我的问题是:如何更改cmake在Travis CI下使用的编译器?
这是我的.travis.yml.说明
在您的.travis.yml
中,我们看到:
- if [ "$CXX" == "clang++" ]; then export CXX="clang++" && bii cpp:build; fi
- if [ "$CXX" == "g++" ]; then export CXX="g++" && bii cpp:build; fi
biicode
的命令bii-cpp:build
使用biicode
的默认生成器运行CMake,该生成器是用于Unix平台(GNU工具链)的“Unix Makefiles”
。阅读相关信息:
此行为可以在日志中看到:正在运行:cmake-G“Unix makefile”-Wno dev../cmake
(,第257行)
CMake并不总是查找环境变量CXX/CC
(如中所述)。它取决于所选的生成器。当我在没有生成器的情况下调用CMake(我的travis文件:)时,它适用于我
解决
- 将CMake单独与方法2中描述的
格式一起使用()CMake-D
- 设置
以使用正确的CMake生成器()或使用biicode
的自定义工具链()biicode
- 您可以使用矩阵。如果您有许多不同的编译器(例如gcc5、gcc6、clang3.7、clang3.8),这一点尤其有用:
如果您有不同版本的编译器,则可以对其进行扩展:
[…]
matrix:
include:
- env: CXX=g++-5 CC=gcc-5
- env: CXX=g++-6 CC=gcc-6
- env: CXX=clang++-3.8 CC=clang-3.8
[…]
它也不会复制脚本步骤,并保持文件中没有if…else…部分
cmake第一次应该使用GCC,而在后者上使用Clang不是吗?
这种方法应该可以很好地工作。但是我更喜欢使用cmake工具链,它更灵活。示例:和@ruslo,但不起作用。如您所见,cmake完全摆脱了CXX
的值,即clang++
[…]
matrix:
include:
- env: CXX=g++-5 CC=gcc-5
- env: CXX=g++-6 CC=gcc-6
- env: CXX=clang++-3.8 CC=clang-3.8
[…]