我在
Linux上使用Eclipse CDT Mars.2(和Neon RC).我的发行版的默认C编译器是GCC 5.3.1,但对于我的一些工作,我使用的是GCC 4.9.3.我希望我的项目的所有内容都使用GCC 4.9.3:工具发现,C标准库,包含文件路径,索引器,预处理 – 所有这些.
这样做的正确方法是什么?似乎Eclipse有相当拜占庭的“提供者”和“工具链”配置,我不想进行设置,我以后无法撤消…
注意:
我确实尝试在某些预处理器包含等提供程序设置中用/usr/bin/g -4.9替换${COMMAND},这确实导致发现4.9.3相关的包含文件,但我的索引器没有像那样,所有的std :: stuff都显示为红色且未解析.然后我试着寻找我设置用于索引的编译器版本的位置,但我找不到.
最佳答案 有两种可能的答案,取决于您是在做“标准制作”还是“制作制作”.标准制作意味着您正在编写自己的Makefile并自行管理所有这些. Managed Make意味着您让CDT创建Makefile并管理它们.
标准制作
对于标准品,一切都由扫描仪发现的东西控制.扫描程序处理查找作为项目一部分的所有系统包含文件,并将这些文件提供给索引器以解析符号,并允许诸如头文件导航之类的内容.
要更改使用的编译器,您需要用您选择的编译器替换${COMMAND}.您(作为用户)可以确保此命令与您在Makefile中使用的命令相匹配.
要更改${COMMAND}:
>打开项目属性(通过右键单击项目)
>选择C/C++一般 – >预处理器在树中包含路径,宏等.
>选择提供商选项卡
>从列表中选择CDT GCC内置编译器设置
>替换命令中的${COMMAND}以获取编译器规范:到您想要的g可执行文件.
这是一个截图,以帮助:
要查看此操作,以下是一些有和没有描述更改的屏幕截图.在我的机器上,我有/usr/bin/g是版本5.3和/usr/bin/g -4.7是版本4.7.
默认g
覆盖g到版本4
使用环境管理
上面的问题是你需要在Makefile和构建设置之间协调g.对此的一个解决方案是使用C/C++构建环境设置将CXX定义为要使用的编译器.在项目设置(项目属性 – > C/C++构建 – >环境)或全局首选项(首选项 – > C/C++ – >构建 – >环境)中设置CXX环境变量.
然后用${CXX}替换${COMMAND}.
这是一个截图,演示了我所描述的内容:
管理制造
相反,如果您使用的是Managed Make,则需要覆盖各个工具的构建设置.然后,这些设置将提供给Standard Make直接使用的预处理器包含路径,宏等设置.
要更改构建设置,您需要在几个地方覆盖用于编译器的命令,每种类型的工具一次.从项目属性开始 – > C/C++ Build – >设置,然后编辑以下每个:
> GCC C编译器 – >通常设为g
> GCC C编译器 – >通常设置为gcc
> GCC C Linker – >通常设为g
这是一个演示截图: