Eclipse CDT项目模板 - 设置下拉选项

时间:2015-10-21 16:07:51

标签: eclipse c++11 eclipse-cdt eclipse-pde

我正在尝试为Eclipse CDT创建一个新项目模板,以便解决我提出的问题here。 @Jonah Graham在他对1的回答中提供了一个非常详细的演练,这让我大部分都走了。

但是,我无法弄清楚如何设置通过下拉列表指定的选项;例如设置/工具设置/ GCC C ++编译器/方言选项卡上的方言/语言标准为ISO C++11 (-std=c++01)。如果我想更改默认的优化或调试级别等,则会出现同样的问题。

我想也许这可以通过像

这样的东西来实现
<process
    type="org.eclipse.cdt.managedbuilder.core.SetMBSStringListOptionValues">
    <simple name="projectName" value="$(projectName)" />
    <complex-array name="resourcePaths">
        <element>
            <simple name="id" value=".*cpp\.compiler\.option\.dialect\.std." />
            <simple-array name="values">
              <element value="gnu.cpp.compiler.dialect.c++11" />
            </simple-array>
            <simple name="path" value="" />
        </element>
    </complex-array>
</process>

不幸的是,这似乎没有任何影响(没有错误,但在生成的.cproject文件中也没有)。

我可以通过设置&#34;其他方言&#34;来解决这个问题。 flag,这只是一个字符串,但我想知道如何通过下拉列表来实现这一点,因为这些在其他地方出现。

1 个答案:

答案 0 :(得分:3)

执行此选项的方法是将其视为字符串,并将内部字符串值更改为枚举值。我用C99(即不是C ++)对它进行了测试,我使用了它:

<!--  Set -std=c99 by selecting the enum in the settings -->
<process
    type="org.eclipse.cdt.managedbuilder.core.SetMBSStringOptionValue">
    <simple name="projectName" value="$(projectName)" />
    <complex-array name="resourcePaths">
        <element>
            <simple name="id" value=".*compiler\.option\.dialect\.std.*" />
            <simple name="value" value="ISO C99 (-std=c99)" />
            <simple name="path" value="" />
        </element>
    </complex-array>
</process>

因此,对于您的解决方案,我希望这会有效。请注意,该值是显示给用户的任何值:

<process
    type="org.eclipse.cdt.managedbuilder.core.SetMBSStringOptionValue">
    <simple name="projectName" value="$(projectName)" />
    <complex-array name="resourcePaths">
        <element>
            <simple name="id" value=".*cpp\.compiler\.option\.dialect\.std." />
            <simple name="value" value="gnu.cpp.compiler.dialect.c++11" />
            <simple name="path" value="" />
        </element>
    </complex-array>
</process>

与您的版本相比,我更改了流程类型和整个name="value"元素(从simple-arraysimple以及内部名称以显示名称)。