在CDT项目中使用不同C ++编译器的正确方法是什么?

时间:2016-06-13 21:17:01

标签: c++ eclipse-cdt eclipse-mars g++4.9 version-compatibility

我在Linux上使用Eclipse CDT Mars.2(和Neon RC)。我的发行版的默认C ++编译器是GCC 5.3.1,但对于我的一些工作,我使用的是GCC 4.9.3。我希望所有关于我的项目使用GCC 4.9.3:工具发现,C ++标准库,包含文件路径,索引器,预处理 - 所有这些。

正确的方法是什么?似乎Eclipse有拜占庭"提供商"和"工具链"配置,我不想进行设置,我以后无法撤消...

注意:  我确实尝试在某些预处理程序包含等提供程序设置中用${COMMAND}替换/usr/bin/g++-4.9,这确实导致发现4.9.3相关的包含文件,但我的索引器没有像那样,所有的std :: stuff都显示为红色且未解析。然后我试着寻找我设置用于索引的编译器版本的位置,但我找不到。

1 个答案:

答案 0 :(得分:2)

有两种可能的答案,取决于你是否正在做"标准制作"或" Mangaged Make"。标准制作意味着您正在编写自己的Makefile并自行管理所有这些。 Managed Make意味着您让CDT创建Makefile并管理它们。

标准制作

对于标准品,一切都由扫描仪发现的内容控制。扫描程序处理查找属于项目的所有系统包含文件,并将这些文件提供给索引器以解析符号,并允许诸如头文件导航之类的内容。

要更改使用的编译器,您需要将${COMMAND}替换为您选择的编译器。您(作为用户)可以确保此命令与您在Makefile中使用的命令相匹配。

更改${COMMAND}

  1. 打开项目属性(通过右键单击项目)
  2. 选择 C / C ++常规 - > 预处理器在树中包含路径,宏等
  3. 选择提供商标签
  4. 从列表中选择 CDT GCC内置编译器设置
  5. 替换命令中的${COMMAND}以获取编译器规范:到您想要的g ++可执行文件。
  6. 这是一个帮助屏幕截图:

    command edit

    要查看此操作,以下是一些有和没有描述更改的屏幕截图。在我的机器上,我有/usr/bin/g++版本5.3和/usr/bin/g++-4.7版本4.7。

    使用默认g ++

    g++5

    将g ++重写为版本4

    g++4

    使用环境管理

    上述问题是您需要在Makefile和构建设置之间协调 g ++ 。对此的一个解决方案是使用 C / C ++ Build Environment 设置将CXX定义为要使用的编译器。在项目设置中设置CXX环境变量(项目属性 - > C / C ++ Build - > 环境)或全局首选项(首选项 - > C / C ++ - > 构建 - > 环境)。

    然后将${COMMAND}替换为${CXX}

    以下是演示我所描述内容的屏幕截图:

    environment

    Managed Make

    相反,如果您使用的是Managed Make,则需要覆盖各个工具的构建设置。然后,这些设置将输入标准制作所直接使用的预处理器包含路径,宏等设置。

    要更改构建设置,您需要在几个地方覆盖用于编译器的命令,每种类型的工具一次。从项目属性开始 - > C / C ++ Build - > 设置然后编辑以下各项:

    • GCC C ++编译器 - >通常设置为g++
    • GCC C编译器 - >通常设置为gcc
    • GCC C ++链接器 - >通常设置为g++

    以下是演示的截图:

    mananged make screenshot