【问题标题】:Specifying compiler versions in travis for cmake builds在 travis 中为 cmake 构建指定编译器版本
【发布时间】:2019-08-04 08:11:35
【问题描述】:

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

我修改了 .travis.yml 文件 here 以根据 travis 文档指定 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_COMPILERCMAKE_CXX_COMPILER 来修复错误,但我无法让它工作。 但是,它可以正确构建:

  env:
    - MATRIX_EVAL="CC=gcc && CXX=g++"
  ...
  env:
    - MATRIX_EVAL="CC=clang && CXX=clang++"

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

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

【问题讨论】:

    标签: c++ gcc cmake clang travis-ci


    【解决方案1】:

    也许这是特拉维斯的问题?只需添加g++-9 package and changing the variable to MATRIX_EVAL="CC=gcc-9 && CXX=g++-9" 即可成功生成compilation of your project with 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
    

    【讨论】:

      猜你喜欢
      • 2019-10-07
      • 1970-01-01
      • 2017-01-19
      • 2013-02-26
      • 2012-10-13
      • 2021-04-22
      相关资源
      最近更新 更多