linux 在g++中更改默认C++标准

x6yk4ghg  于 2023-11-17  发布在  Linux
关注(0)|答案(2)|浏览(178)

为了在C++11标准中编译程序,我们需要做:

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

字符串
但是有没有可能我可以将g的默认标准设置为C11,这样我就不必一次又一次地提到这个选项了。

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


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

8ftvxx2r

8ftvxx2r1#

经过一番研究(您可能已经做过了),我还没有找到一种方法来改变g++的默认行为,除了重建一个自定义版本或给它加别名。

为什么这可能是一件好事

每个版本的g++都有一个定义良好的默认行为,这一点很重要。请考虑:如果您更改g++的默认行为,并试图编译一个作者不知道您的配置的C++项目,该项目可能无法编译或编译时出现细微的错误/意外行为。
在您自己的项目中,您可以轻松地将所有相关的标志和选项添加到您的MakefileCMakeLists.txt中,这样您就不需要再次输入它们。这也将确保编译您的项目的其他人无论其配置如何,都将收到正确的选项。

2lpgd968

2lpgd9682#

我知道这篇文章是旧的,但我想回答,因为它不断出现,而我试图这样做。
可以通过修改g++ spec文件来更改默认标准。
通过运行以下命令查找等级库文件位置列表

strace g++ 2>&1 | grep specs

字符串
这将给予gcc将查找的文件路径列表。选择一个路径并在该位置创建一个名为spec的文件
检查其运行情况

g++ -v


结果的第一行将显示Reading specs from <path to specs file>
下次运行

g++ -dumpspecs > spec


这将坑默认的spec文件到您的自定义一个
最后一步是打开specs文件并找到行*cc1plus:转到下面的行并添加%{!std*:-std=<desired default standard>}
保存文件,这应该工作
现在,当您在不指定标准的情况下进行编译时,您放在spec文件中的标准将是所使用的ine
更多关于spec文件:https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html

相关问题