Eclipse中用于gcc编译器的默认标志

4
我希望所有的C程序默认都使用编译选项-Wall -pedantic -ansi。有没有办法让Eclipse为所有项目默认添加这些标志到编译器命令中?

我不使用makefiles。我在Windows上使用Eclipse和MinGW GCC编译器。 - Pieter
在我的情况下不是这样的。在我的Eclipse目录中看不到Makefile文件。 - Pieter
1
嗨,Pieter,我认为答案确实为当前项目设置了标志,而不是所有新项目。我也发现这是一个问题,无法纠正 - 我只是以一种类似于Visual Studio的方式使用Eclipse,但使用makefile,在每次想要测试程序时都通过make运行makefile。不好。 - user257111
@Pieter:make也可以在没有makefile的情况下工作。 - Roger Pate
@Roger 我个人喜欢使用makefile来构建大型项目。但是,我希望能够自定义内置工具的标志,甚至更改默认的内置工具。例如,对于教学而言,gcc -Wall -Werror -pedantic非常好。实际上,它也可以强制有经验的编码人员遵循良好的实践。主要是因为我想全局地改变这些东西,所以我反对使用内置工具。 - user257111
显示剩余2条评论
5个回答

1

假设您正在使用Eclipse的内部构建器,请转到首选项-> C / C ++ Build->设置

选择编译器的警告部分,有-Wall和-pedantic的复选框 对于-ansi,请在杂项中设置

正如OP所指出的那样,这仅适用于每个项目而不是全局设置


1
这不是为某个特定项目设置标志,而不是所有新项目吗? - Pieter

1

将CFLAGS分配给包括这些值,并让Eclipse运行一个默认使用该环境变量进行编译的工具(例如make)。

在运行Eclipse之前,您可能需要指定环境变量(然后当Eclipse运行make时它们会被继承),但是可能有一种方法可以在Eclipse中指定默认环境。

(我不使用Eclipse,所以我将尝试安装和测试这个;或者也许这个答案可以唤起某人的记忆,如果是这样,请随意编辑。)


另外,你可能想要使用 -std=c99 而非 -ansi。-ansi 选项仅表示 -std=c89 或 -std=c++98,具体取决于你是编译 C 还是 C++,而这两个标准都已经过时了。


我在运行Windows的虚拟机中安装了Eclipse进行测试,即使CFLAGS在环境变量中,Eclipse也不使用它。在我尝试的一些情况/项目中,Eclipse还会假装(通过显示“make all”和“make clean”等文本)正在运行make,但实际上并没有真正使用make(可能是使用某个内部引擎)。这个答案对于Eclipse来说是错误的方向。

你能换个说法吗?我不知道你在说什么。(顺便说一下,我正在使用Windows。) - Pieter
@Pieter:Windows 隐藏了环境变量;它们可以通过右键单击“我的电脑”,选择属性,然后我记不清楚了。PATH 是另一个你可能听说过的环境变量。 - Roger Pate
1
我仍然不明白将某些文件夹添加到PATH中如何让我默认使用“-Wall -pedantic -ansi”标志运行GCC。恐怕我需要更具体的建议。 - Pieter
@Pieter:PATH不会;PATH只是环境变量的一个示例,因为您似乎没有意识到我在谈论CFLAGS。CFLAGS变量是放置C编译器选项的通常位置。 - Roger Pate
嗯...我没有看到CFLAGS列在环境变量中。我应该创建它吗? - Pieter
@Pieter:如果你需要它(显然不适用于Eclipse),并且它很有用,那么是的,如果它还不存在,你就必须创建它。 - Roger Pate

1
在Windows上使用Eclipse:对于一个项目:属性 -> C/C++构建 -> 设置,然后选择“工具设置”选项卡。选择“CGG C++编译器”,然后在右侧您将看到命令:g++,将其修改为命令:g++ CFLAGS,例如,如果您想要C++11支持,请修改为命令:g++ --std=c++11。
PS:此修改仅适用于当前项目和当前配置。如果您希望在所有配置中使用它,请类似地修改每个配置(运行、调试)。

-1

编辑:我看到楼主在之前的评论中提到他使用Windows,但是以下信息可能对Linux平台上使用Eclipse的用户有所帮助,如果Eclipse支持别名。


你在 Linux 上运行 Eclipse 吗?如果是的话,请尝试为 gcc 命令设置别名;在终端中运行以下命令:
alias gcc='gcc -Wall -pedantic -ansi'

这是Linux中指定应用程序默认参数的常见方法。然而,Eclipse可能会执行实际的gcc应用程序并忽略别名;我还没有测试过。


1
别名是一个shell的东西,通常不会暴露给其他程序。 - Roger Pate
Eclipse不遵守在.bashrc文件中添加的别名。 - KawaiKx

-1

是的,运行方式为->运行配置->第一个选项卡是"Main",选择第二个选项卡(靠近它的那个),你会看到有一个“arguments”框,在里面粘贴-Wall -pedantic -ansi,然后应用并运行。下次再运行时,这些参数将作为默认值。


2
我需要在编译时使用这些标志,而不是在运行二进制文件时使用。这些设置是针对每个项目保存的,而不是所有项目。 - Pieter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接