更改 g++ 中的默认 C++ 标准

问题描述 投票:0回答:2

为了用 C++11 标准编译程序,我们需要这样做:

 g++ -std=c++11 myProgram.cpp -o myProgramExec

但是我是否可以将 g++ 的默认标准设置为 C++11,这样我就不必一次又一次提及这个选项,尽管我也可以在我的 .bashrc 中为此添加一个别名:

alias g++='g++ -std=c++11';

但我想知道是否有比这更好的方法。是否有可以编辑的 g++ 配置文件来实现此目的?或者有更简单的方法吗?

c++ linux c++11 g++
2个回答
9
投票

经过一些研究(您可能已经自己完成了),除了重建自定义版本或为其添加别名之外,我还没有找到更改

g++
默认行为的方法。


为什么这可能是一件好事

重要的是,

g++
的每个版本都有一个单一的、定义良好的默认行为。考虑一下:如果您更改
g++
的默认行为并尝试编译一个作者无法知道您的配置的 C++ 项目,则该项目可能无法编译或编译时出现细微错误/意外行为。

在您自己的项目中,您可以轻松地将所有相关标志和选项添加到您的

Makefile
CMakeLists.txt
中,这样您就无需再次键入它们。这也将确保编译您的项目的其他人无论其配置如何都会收到正确的选项。


0
投票

我意识到这篇文章很旧,但我想回复,因为在我尝试这样做时它不断出现。

可以通过修改 g++ 规范文件来更改默认标准。

通过运行查找规范文件位置列表

strace g++ 2>&1 | grep specs

这将为您提供 gcc 将查找的文件路径列表。 选择一个并在该位置创建一个名为

spec
的文件

检查其工作运行情况

g++ -v

结果的第一行会说

Reading specs from <path to specs file>

下次运行

g++ -dumpspecs > spec

这会将默认规范文件放入您的自定义规范文件中

最后一步是打开规格文件并找到行

*cc1plus:
转到下面的行并添加
%{!std*:-std=<desired default standard>}

保存文件就可以了

现在,当您在不指定标准的情况下进行编译时,您放入规范文件中的文件将是使用的ine

有关规范文件的更多信息:https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html

© www.soinside.com 2019 - 2024. All rights reserved.