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

Eclipse CDT Project Template - Setting Drop-Down Options

我正在尝试为 Eclipse CDT 创建一个新项目模板,以解决我提出的问题 . @Jonah Graham provided a very detailed walk-through in his answer to ,这已经让我完成了大部分工作。

但是,我不知道如何设置通过下拉列表指定的选项;例如在设置/工具设置/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 文件中也没有任何内容)。

我可以通过设置 "Other Dialect" 标志来解决这个问题,它只是一个字符串,但我想知道如何通过下拉菜单来做到这一点,因为它们出现在其他地方。

执行此选项的方法是将其视为字符串,并在内部将字符串值更改为枚举值。我用 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 加上内部名称以显示名称)。