C++ 如何选择C/C++;用于GitHub操作作业的编译器?
有没有办法为GitHub操作作业选择默认的C/C++编译器(如gcc或clang) 确切地说,我希望CMake在不破坏CMake命令的情况下选择不同的编译器 理想情况下,通过扩展构建矩阵。与Node.js版本类似,如官方文档所述: 诸如此类: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环境变量来选择编译器,我喜欢您使用矩阵在不同编译器下运行的想法。现在我们只需要看看,看看如何使用矩阵。下面是他们展示的
[..]
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
(请参阅)中才能让一切正常工作。