C++ 如何选择C/C++;用于GitHub操作作业的编译器?

C++ 如何选择C/C++;用于GitHub操作作业的编译器?,c++,continuous-integration,github-actions,C++,Continuous Integration,Github Actions,有没有办法为GitHub操作作业选择默认的C/C++编译器(如gcc或clang) 确切地说,我希望CMake在不破坏CMake命令的情况下选择不同的编译器 理想情况下,通过扩展构建矩阵。与Node.js版本类似,如官方文档所述: 诸如此类: [..] strategy: matrix: compiler: [gcc, clang] [..] 建议使用CC和CXX环境变量来选择编译器,我喜欢您使用矩阵在不同编译器下运行的想法。现在我们只需要看看,看看如何使用矩阵。下面是他们展示的

有没有办法为GitHub操作作业选择默认的C/C++编译器(如gcc或clang)

确切地说,我希望CMake在不破坏CMake命令的情况下选择不同的编译器

理想情况下,通过扩展构建矩阵。与Node.js版本类似,如官方文档所述:

诸如此类:

[..]
strategy:
  matrix:
    compiler: [gcc, clang]
[..]
建议使用
CC
CXX
环境变量来选择编译器,我喜欢您使用矩阵在不同编译器下运行的想法。现在我们只需要看看,看看如何使用矩阵。下面是他们展示的示例片段:

runs-on: ${{ matrix.os }}
strategy:
  matrix:
    os: [ubuntu-16.04, ubuntu-18.04]
    node: [6, 8, 10]
steps:
  - uses: actions/setup-node@v1
    with:
      node-version: ${{ matrix.node }}
如您所见,在
matrix:
下指定
foo
变量,然后创建一个
matrix.foo
值,您可以在其他地方引用该值。所以你会这样做:

name: Build master

on: [push]

strategy:
  matrix:
    compiler: [gcc, clang]
jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Run CMake
      env:
        CC: ${{ matrix.compiler }}
      run: cmake --your-args-here

这究竟为什么会有两票接近?这个问题直接涉及到编程工具。我忽略了他们选择
节点作为
节点版本
来执行
设置节点
操作。你的解决方案就是出路。它很容易扩展,也可以设置CXX。尽管如此,我认为矩阵必须是实际作业的一部分:
jobs..strategy.matrix
。我稍微喜欢使用
-DCMAKE\u CXX\u COMPILER={foo}
调用CMake,并在
env
中定义
foo
。至少在Travis CI上,手动安装的编译器版本(比如GCC svn或Clang svn nightly builds)无法直接使用CXX。这个答案让我达到了90%的效果,但我必须将strategy关键字放在
build
(请参阅)中才能让一切正常工作。