我正在尝试为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,这只是一个字符串,但我想知道如何通过下拉列表来实现这一点,因为这些在其他地方出现。
答案 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-array
到simple
以及内部名称以显示名称)。