如何在GitHub CI中使用最新版本的GCC? 我在Github上有一个C++项目,我使用Github CI。通过策略属性将我的工作流配置为在Linux和Windows上运行: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest]

如何在GitHub CI中使用最新版本的GCC? 我在Github上有一个C++项目,我使用Github CI。通过策略属性将我的工作流配置为在Linux和Windows上运行: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest],github,gcc,cmake,continuous-integration,github-ci,Github,Gcc,Cmake,Continuous Integration,Github Ci,到目前为止,这对我来说效果很好,Cmake将编译器识别为GNU9.3.0。然而,我现在想在我的项目中使用GCC10中添加的一个实验特性,因此我的构建由于旧的编译器版本而失败 如何使用GitHub CI工作流中较新版本的GCC?对于linux构建,您可以使用以下构建步骤将默认GCC切换到GCC-10 -name:在linux上切换到gcc-10 if:matrix.configurations.os==“ubuntu最新版本” 运行:| sudo apt安装gcc-10g++-10 sudo更新备

到目前为止,这对我来说效果很好,Cmake将编译器识别为
GNU9.3.0
。然而,我现在想在我的项目中使用GCC10中添加的一个实验特性,因此我的构建由于旧的编译器版本而失败


如何使用GitHub CI工作流中较新版本的GCC?

对于linux构建,您可以使用以下构建步骤将默认GCC切换到GCC-10

-name:在linux上切换到gcc-10
if:matrix.configurations.os==“ubuntu最新版本”
运行:|
sudo apt安装gcc-10g++-10
sudo更新备选方案——安装/usr/bin/gcc-gcc/usr/bin/gcc-10 100——从/usr/bin/g++/usr/bin/g++-10——从/usr/bin/gcov-gcov/usr/bin/gcov-10
sudo更新备选方案——设置gcc/usr/bin/gcc-10
脚本中的前两行应该是可选的,因为最新版本的ubuntu中已经安装了gcc-10。但是把它们放在那里不会有太大的伤害,这可能有助于弄清楚发生了什么,以及如何在本地复制构建。 如果您对其工作原理感兴趣,可以查看


Windows最新使用VisualStudio作为默认编译器,但由于您只询问GCC,我想它已经支持您正在使用的C++特性了。

< p>对于Linux构建,您可以使用以下构建步骤将默认GCC转换为GCC-10。
-name:在linux上切换到gcc-10
if:matrix.configurations.os==“ubuntu最新版本”
运行:|
sudo apt安装gcc-10g++-10
sudo更新备选方案——安装/usr/bin/gcc-gcc/usr/bin/gcc-10 100——从/usr/bin/g++/usr/bin/g++-10——从/usr/bin/gcov-gcov/usr/bin/gcov-10
sudo更新备选方案——设置gcc/usr/bin/gcc-10
脚本中的前两行应该是可选的,因为最新版本的ubuntu中已经安装了gcc-10。但是把它们放在那里不会有太大的伤害,这可能有助于弄清楚发生了什么,以及如何在本地复制构建。 如果您对其工作原理感兴趣,可以查看


Windows最新使用VisualStudio作为默认编译器,但由于您只询问了GCC,我想它已经支持您正在使用的C++特性了。

@ WiRW0RM发布了一个很好的答案,它的工作非常普遍。值得注意的是,允许在GitHub CI Runner上使用

sudo
,因此只需安装所需的软件包:

sudo apt install gcc-10 g++-10

# or
sudo apt install gcc-11 g++-11

# or, for very recent Clang:
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 12
sudo apt-get install libc++-12-dev libc++abi-12-dev
然后,因为我使用的是CMake,所以我可以设置
CXX
环境变量,而不是使用
sudo-update-alternatives

echo "CXX=g++-10" >> $GITHUB_ENV

后续的CMADE配置步骤将选择G++- 10作为C++编译器。

@ WiRW0RM发布了一个优秀的答案,它的工作非常好。值得注意的是,允许在GitHub CI Runner上使用

sudo
,因此只需安装所需的软件包:

sudo apt install gcc-10 g++-10

# or
sudo apt install gcc-11 g++-11

# or, for very recent Clang:
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 12
sudo apt-get install libc++-12-dev libc++abi-12-dev
然后,因为我使用的是CMake,所以我可以设置
CXX
环境变量,而不是使用
sudo-update-alternatives

echo "CXX=g++-10" >> $GITHUB_ENV

后续的CMADE配置步骤将选择G++- 10作为C++编译器。这个答案很有效,很好地解决了这个问题,所以我接受它。我最终选择了一个稍微不同的方向,因为gcc-10和gcc-11在我需要的功能中有缺陷:)我明白了,谢谢。这个答案很有效,很好地解决了这个问题,所以我接受它。我最终选择了一个稍微不同的方向,因为gcc-10和gcc-11在我需要的功能中有缺陷:)