c++ - 如何选择用于 GitHub Actions 作业的 C/C++ 编译器?

标签 c++ continuous-integration github-actions

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

准确地说,我希望 CMake 在不修改 CMake 命令的情况下选择不同的编译器。

理想情况下,通过扩展构建矩阵。类似于 Node.js 版本,如官方文档中所述: https://help.github.com/en/articles/configuring-a-workflow#configuring-a-build-matrix

类似的东西:

[..]
strategy:
  matrix:
    compiler: [gcc, clang]
[..]

最佳答案

https://gitlab.kitware.com/cmake/community/wikis/FAQ#how-do-i-use-a-different-compiler建议使用 CCCXX 环境变量来选择编译器,我喜欢你使用矩阵在不同编译器下运行的想法。所以现在我们只需要看看 https://help.github.com/en/articles/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix并查看如何使用矩阵。这是他们展示的示例片段:

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

关于c++ - 如何选择用于 GitHub Actions 作业的 C/C++ 编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57810623/

相关文章:

c++ - C 和 C++ 中的图形

python - 我应该使用哪个版本的 cloudshell-shell 和 cloudshell-shell-core?

powershell - 使用powershell从xml读取键值

git - 可以将 GitHub Secrets 与公共(public)存储库一起使用吗?

c++ - 为什么 memory_order 作为 std::atomic 函数的运行时参数给出

c++ - getline 的垃圾值

javascript - package.json 生成/npm 未使用的包

version-control - 强制稳定主干/主分支

github - 如何创建 Github 操作来标记特定用户创建的问题?

c++ - 从 C# 背景学习 C++