【问题标题】:Default flags for gcc compiler in EclipseEclipse 中 gcc 编译器的默认标志
【发布时间】:2011-01-12 03:17:17
【问题描述】:

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

【问题讨论】:

  • 你想使用什么样的makefile?自动生成的文件还是您打算手动维护它们?
  • 我不使用 makefile。我在 Windows 上使用 Eclipse 和 MinGW GCC 编译器。
  • 我的情况不是这样。在我的 Eclipse 目录中看不到 Makefile。
  • 嗨 Pieter,我认为答案确实为当前项目设置了标志,而不是所有新项目。我也发现这是一个问题并且无法纠正它 - 我只是以一种视觉工作室式的方式使用 Eclipse,但使用 makefile,每次我想测试程序时都通过 make 运行 makefile。不好。
  • @Pieter:make 也不需要 makefile。

标签: c eclipse gcc eclipse-cdt


【解决方案1】:

指定 CFLAGS 以包含这些值,并让 Eclipse 运行一个在编译时默认使用该环境变量的工具(例如 make)。

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

(我不使用 Eclipse,所以我将不得不了解如何安装和测试它;或者这个答案可能会唤起某人的记忆,如果是这样,请随时编辑。)


顺便说一句,您可能需要 -std=c99 而不是 -ansi。 -ansi 选项仅表示 -std=c89 或 -std=c++98,具体取决于您是在编译 C 还是 C++,并且这两个标准都已过时。


我在运行 Windows 的 VM 中安装了 Eclipse 来测试它,即使 CFLAGS 在环境中,Eclipse 也不使用它。 Eclipse 还假装(通过显示诸如“make all”和“make clean”之类的文本)它在我尝试过的一些情况/项目中运行 make,而它并没有真正使用 make(可能使用一些内部引擎)。这个答案对 Eclipse 来说是错误的。

【讨论】:

  • 你能改写一下吗?我不知道你在说什么。 (顺便说一下,我使用的是 Windows。)
  • @Pieter:Windows 隐藏环境变量;它们可以通过右键单击“我的电脑”,选择“属性”来获得,其余的我不记得了。 PATH 是您之前可能听说过的另一个环境变量。
  • 我仍然看不到将某些文件夹添加到 PATH 将如何让我默认运行带有 -Wall -pedantic -ansi 标志的 GCC。恐怕我需要更具体的建议。
  • @Pieter:PATH 不会; PATH 只是环境变量的一个示例,因为您似乎没有意识到我在谈论 CFLAGS 什么。 CFLAGS 变量是放置 C 编译器选项的常用位置。
  • 嗯...我没有看到 CFLAGS 被列为环境变量之一。我应该创建它吗?
【解决方案2】:

假设您使用的是 Eclipse 的内部构建器,请转到 Preferences->C/C++ Build->Settings

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

正如 OP 所说,这仅适用于每个项目,而不是全局设置

【讨论】:

  • 这不是为某个项目而不是所有新项目设置标志吗?
【解决方案3】:

Windows 上的 Eclipse:对于项目:属性 -> C/C++ 构建 -> 设置而不是“工具设置”选项卡。选择“CGG C++ 编译器”而不是在右侧你会看到命令:g++ 将其修改为 Command: g++ CFLAGS 例如,如果您想让 C++11 支持修改为 Command: g++ --std=c++11

PS:此修改仅对当前项目和当前配置有效。如果您希望所有配置都使用它,请类似地修改每个配置(运行、调试)。

【讨论】:

    【解决方案4】:

    编辑:我从先前的评论中看到 OP 运行 Windows,但是如果 Eclipse 尊重别名,以下信息可能对 Linux 平台上的 Eclipse 用户有益。


    您是否在 Linux 中运行 Eclipse?如果是这样,请尝试为 gcc 命令设置别名;在终端运行:

    alias gcc='gcc -Wall -pedantic -ansi'
    

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

    【讨论】:

    • 别名是一种外壳,通常不会暴露给其他程序。
    • Eclipse 不支持在 .bashrc 文件中添加的别名
    【解决方案5】:

    是的,运行方式 -> 运行配置 -> 第一个选项卡是“主”,选择第二个选项卡(旁边的那个),你有参数框,粘贴 -Wall -pedantic -ansi 并应用然后运行。每次运行时,您都会默认使用这些参数

    【讨论】:

    • 我需要在编译时使用这些标志,而不是在运行二进制文件时。这些设置是按项目保存的,而不是针对所有项目的。
    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    相关资源
    最近更新 更多