【问题标题】:Eclipse CDT Project Template - Setting Drop-Down OptionsEclipse CDT 项目模板 - 设置下拉选项
【发布时间】:2016-01-20 17:40:29
【问题描述】:

我正在尝试为 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 文件中也没有任何内容)。

我可以通过设置“其他方言”标志来解决这个问题,这只是一个字符串,但我想知道如何通过下拉菜单来解决这个问题,因为这些出现在其他地方。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 如果有帮助,我更新了github.com/jonahkichwacoders/example_cdt_template 以合并此设置。
    • 这对我不起作用 - 我没有设置任何东西。我复制了上面的内容并仔细检查了该值是否是下拉菜单中显示的内容。我还尝试使用“gnu.cpp.compiler.dialect.c++11”的值,这是保存在 .cproject 中的值,但这些都不适合我。
    • @sfjac 工作区日志中有什么内容吗?顺便说一句,我错过了在 build.properties 中包含 template/ 的内容,请查看 GitHub 更改。如果还有其他问题,请再问一个问题。
    • 如果我的示例中有错误,您可以编辑实际工作的答案吗?
    • @sfjac 你能多说一下你在哪里错过了template/ 吗?我正在尝试按照这些说明创建一个模板,但现在我的 CProject (stackoverflow.com/questions/33092746/…) 可以工作,但 C++ 不能......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    相关资源
    最近更新 更多