将编译器开关添加到 Eclipse CDT 内置编译器设置生成?

Adding compiler switch to Eclipse CDT Built-In Compiler Settings generation?

我有一个基于 Makefile 的 Eclipse CDT 项目,在 Project > Properties > C/C++ General > Preprocessor Include Paths, Macros etc. > GNU C++ > CDT GCC Built-in Compiler Settings > __cplusplus 下的值为 201402L

我的 Makefile 中设置了 -std=c++17 标志,所以这个预定义宏的实际值是 201703L 而不是 201402L.

显然,GCC Built-In Compiler Settings 中的预定义宏列表是在没有 -std=c++17 标志的情况下生成的。

是否可以在 CDT GCC Built-in Compiler Settings 中设置用于生成预定义宏列表的编译器标志并触发它们重新生成?如果是where/how这是配置的吗?

在同一首选项页面上,如果您切换到 Providers 选项卡(而不是 Entries)和 select CDT GCC Built-in Compiler Settings 提供商,则有一个 Command to get compiler specs 那里。您可以修改该命令,例如添加 -std=c++17。在该页面上按 Apply 将自动触发提供商再次 运行 并更新预定义宏列表。

您还可以在 Window -> Preferences -> C/C++ -> Build -> Settings -> Discovery tab 中配置此工作区范围。 Use global provider shared between projects 复选框(就在 Command to get compiler specs 上方)控制项目是使用工作区范围的设置还是自己的设置。