在Travis中为CMAKE构建指定编译器版本
Specifying compiler versions in travis for cmake builds
travis构建C 项目文档显示了如何在构建矩阵中指定GCC和Clang编译器版本。但是,它确实不是展示了如何使用CMAKE使用这些编译器构建项目。
我根据Travis文档(即:
(修改了.travis.yml
文件以指定GCC 9和Clang 8 matrix:
include:
- compiler: gcc
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-9
env:
- MATRIX_EVAL="CC=gcc-9 && CXX=g++-9"
- compiler: clang
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-bionic-8
packages:
- clang-8
- libstdc++-8-dev
env:
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
before_install:
- eval "${MATRIX_EVAL}"
- pip install --user cpp-coveralls
...
script:
- mkdir _builds
- cd _builds
- cmake -DVIA_HTTPLIB_UNIT_TESTS=ON -DVIA_HTTPLIB_COVERAGE=ON ${CMAKE_OPTIONS} ..
- make
- ./via-httplib_test
但是是在运行cmake
时引起的构建错误,例如:
$ cmake -DVIA_HTTPLIB_UNIT_TESTS=ON -DVIA_HTTPLIB_COVERAGE=ON ${CMAKE_OPTIONS} ..
CMake Error at /usr/local/cmake-3.12.4/share/cmake-3.12/Modules/CMakeDetermineCCompiler.cmake:48 (message):
Could not find compiler set in environment variable CC:
gcc-9.
Call Stack (most recent call first):
CMakeLists.txt:9 (project)
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
See also "/home/travis/build/kenba/via-httplib/_builds/CMakeFiles/CMakeOutput.log".
The command "cmake -DVIA_HTTPLIB_UNIT_TESTS=ON -DVIA_HTTPLIB_COVERAGE=ON ${CMAKE_OPTIONS} .." exited with 1.
我尝试通过为CMAKE指定CMAKE_C_COMPILER
和CMAKE_CXX_COMPILER
来修复错误,但我无法使其工作。但是,它可以正确构建:
env:
- MATRIX_EVAL="CC=gcc && CXX=g++"
...
env:
- MATRIX_EVAL="CC=clang && CXX=clang++"
但使用默认的仿生gcc
和clang
编译器,即:GCC 7.4.0和Clang 7, GCC 9和Clang 8。
如何编写.travis.yml
文件,以便cmake
可以找到和使用矩阵中指定的编译器版本?
也许这是特拉维斯问题?只需添加g -9包,然后将变量更改为matrix_eval =" cc = gcc-9& amp;&&& cxx = g -9"导致您的项目成功地汇编了您的项目使用GCC 9.3.0
这是我用于构建项目的最小示例:
language: cpp
matrix:
include:
- os: linux
addons:
apt:
sources:
- sourceline: 'ppa:ubuntu-toolchain-r/test'
packages:
- clang-8
env:
- MATRIX_EVAL="CC=clang-8 CXX=clang++-8"
- os: linux
addons:
apt:
sources:
- sourceline: 'ppa:ubuntu-toolchain-r/test'
packages:
- g++-9
env:
- MATRIX_EVAL="CC=gcc-9 CXX=g++-9"
before_install:
- eval "${MATRIX_EVAL}"
script:
- cmake .
- make
相关文章:
- CMake 库链接使用两个不同的编译器版本
- 我的设备上的 C++ 编译器版本是什么
- 检测到 Conan 配置文件设置与 CMake 之间的编译器版本不匹配
- 是否根据编译器版本有条件地包含源文件
- 如果使用低于 VS2015 的 vc++ 编译器版本编译,则 DLL 中的访问冲突
- 在Travis中为CMAKE构建指定编译器版本
- Apple Clang编译器版本架构架构
- 功能模板与Variadic模板过载:Intel C 编译器版本18产生的结果不同于其他编译器.英特尔是错误的
- Boost bjam 不会将编译器版本放在文件名中
- 具有C 接口的C 动态库如何在不同的编译器版本之间不会破坏ABI
- 不同编译器版本的C++中的奇怪行为(字符串通过引用传递):参见简单的程序说明
- 在不同的编译器版本中调用new[]和delete[]
- 具有状态的Microsoft编译器版本19.16.27024.1的问题
- Node.js C 插件开发的编译器版本
- unix中的C 编译器版本
- Solaris 上的 GNU gcc/g++ 编译器版本,支持 C++11/14
- 区分 VC++ 2010 和更高版本的编译器版本
- VisualStudio 优化编译器版本 19.00.23506.0 中存在明显的编译错误
- 混合使用不同编译器版本构建的二进制文件
- 共享内存段在提升版本和编译器版本之间是否兼容