首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在travis中为cmake生成指定编译器版本

在travis中为cmake生成指定编译器版本
EN

Stack Overflow用户
提问于 2019-08-04 08:11:35
回答 1查看 543关注 0票数 0

travis 构建一个C++项目文档展示了如何在构建矩阵中指定gcc和clang编译器版本。但是,它没有说明如何使用cmake使用这些编译器构建项目。

我修改了.travis.yml文件这里,按照travis文档指定gcc 9和clang 8,即:

代码语言:javascript
复制
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时会导致生成错误,例如:

代码语言:javascript
复制
$ 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_COMPILERCMAKE_CXX_COMPILER来修复错误,但是我无法让它正常工作。但是,它正确地构建了:

代码语言:javascript
复制
  env:
    - MATRIX_EVAL="CC=gcc && CXX=g++"
  ...
  env:
    - MATRIX_EVAL="CC=clang && CXX=clang++"

但是使用默认的仿生 gccclang编译器构建,即: GCC 7.4.0和Clang 7,而不是GCC 9和Clang 8。

如何编写.travis.yml文件,以便cmake能够找到和使用矩阵中指定的编译器版本?

EN

回答 1

Stack Overflow用户

发布于 2020-05-01 20:05:33

也许是特拉维斯的问题?简单地将EVAL="CC=gcc-9 && CXX=g+-9“添加到成功的用GCC 9.3.0编译你的项目

这是我在构建项目时使用的一个最小示例:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57344961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档