在Eclipse CDT Indigo中,有一项新功能允许您将新的C / C ++模板项目添加到新项目向导中。我已经想出如何成功地做到这一点。我可以创建一个仅依赖于简单源文件的基本项目,但现在我想创建一个CPPUnit项目,我想自动添加CPPUnit库。对于我的生活,我无法弄清楚如何实现这一目标。有谁知道怎么做?
答案 0 :(得分:5)
对不起,我迟到了,但我对同样的问题也有同样的问题。我找到了解决方案。它适用于我,但我很清楚它可能不像希望的那样普遍。在template.xml中,您可能希望添加以下过程:
<process type="org.eclipse.cdt.managedbuilder.core.AppendToMBSStringListOptionValues">
<simple name="projectName" value= "$(projectName)"/>
<complex-array name="resourcePaths">
<element>
<simple name="id" value="gnu.cpp.link.option.libs" />
<simple-array name="values">
<element value="dl" />
<element value="cppunit" />
</simple-array>
<simple name="path" value="" />
</element>
</complex-array>
</process>
关键部分是知道将两个库dl
和cppunit
放在哪里。密钥gnu.cpp.link.option.libs
是GNU编译器工具链的正确密钥,它在大多数Linux计算机上都是活动的。
我从Eclipse插件org.eclipse.cdt.managedbuilder.gnu.ui_XXXXXXX
中提取了密钥名称。您可以在Eclipse的plugins
文件夹中找到它。如果您需要另一个工具集的密钥,我建议打开plugin.xml文件。在这里,您应该搜索属性valueType="libs"
。相应的id
是您需要在流程文件中操作的密钥。
如果您还需要操纵库搜索路径,请搜索valueType="libPaths"
。这将引导您进入密钥gnu.cpp.link.option.paths
。您可以使用与上面显示的过程类似的过程向列表中添加其他条目。
答案 1 :(得分:4)
令人惊讶这个东西有多难找到。除了 plugin.xml 浏览之外,所有模板都可以有效提升实施这些选项:
来源参考
要浏览的模板
插件/ org.eclipse.cdt.managedbuilder.gnu.ui_X.X.X.xxxxx.jar /模板/ projecttemplates /
GNU C浏览选项
通过逆向工程实施示例
目标 - 设置'Cross GCC Compiler' - &gt;优化 - &gt; '其他优化标志'
打开属性。手动设置目标字段。我将'其他优化标志'设置为'COME_FIND_ME'
在编辑器中打开.cproject文件。搜索COME_FIND_ME。这是我发现的:
<option id="gnu.c.compiler.option.optimization.flags.1380831355" superClass="gnu.c.compiler.option.optimization.flags" value="COME_FIND_ME" valueType="string"/>
在上面列出的'gnu.c.compiler.option.optimization.flags'的plugin.xml中搜索。这是我发现的(在1120行):
<option
name="%Option.Posix.Optimize.Flags"
category="gnu.c.compiler.category.optimization"
id="gnu.c.compiler.option.optimization.flags"
valueType="string">
</option>
离开这个示例项目,然后返回到要添加它的template.xml。我们想在这里附加默认值,所以让我们这样做。添加:
<process type="org.eclipse.cdt.managedbuilder.core.AppendToMBSStringOptionValue">
<simple name="projectName" value="$(projectName)" />
<complex-array name="resourcePaths">
<element>
<simple name="id" value="gnu.c.compiler.option.optimization.flags" />
<simple name="value" value="-Omg_eclipse" />
<simple name="path" value="" />
</element>
</complex-array>
</process>
就是这样。
有用的链接
备注强>
以下是MBS追加/设置功能的实时位置:
完整模板文件示例
最后,这是一个代码片段,可以节省您在互联网上搜索的时间。这个template.xml通过复制main.c并设置三个构建选项来创建一个新项目。
<?xml version="1.0" encoding="ISO-8859-1"?>
<template type="ProjTempl" version="1.0" supplier="stack_overflow" revision="1.0" author="Justin Reina"
id="EXE" label="My C Project" description="set some stuff."help="help.html">
<process type="org.eclipse.cdt.core.CreateSourceFolder">
<simple name="projectName" value="$(projectName)"/>
<simple name="path" value="bsp"/>
</process>
<process type="org.eclipse.cdt.core.AddFiles">
<simple name="projectName" value="$(projectName)"/>
<complex-array name="files">
<element>
<simple name="source" value = "main.c"/>
<simple name="target" value = "main.c"/>
<simple name="replaceable" value = "true" />
</element>
</complex-array>
</process>
<process type="org.eclipse.cdt.managedbuilder.core.AppendToMBSStringListOptionValues">
<simple name="projectName" value= "$(projectName)"/>
<complex-array name="resourcePaths">
<element>
<simple name="id" value="gnu.c.link.option.libs" />
<simple-array name="values">
<element value="corestuff" />
<element value="utilstuff" />
</simple-array>
<simple name="path" value="" />
</element>
</complex-array>
</process>
<process type="org.eclipse.cdt.managedbuilder.core.AppendToMBSStringOptionValue">
<simple name="projectName" value="$(projectName)" />
<complex-array name="resourcePaths">
<element>
<simple name="id" value="gnu.c.compiler.option.optimization.flags" />
<simple name="value" value="-Omg_eclipse" />
<simple name="path" value="" />
</element>
</complex-array>
</process>
<process type="org.eclipse.cdt.managedbuilder.core.SetMBSBooleanOptionValue">
<simple name="projectName" value="$(projectName)" />
<complex-array name="resourcePaths">
<element>
<simple name="id" value="gnu.c.link.option.nostdlibs" />
<simple name="value" value="true" />
<simple name="path" value="" />
</element>
</complex-array>
</process>
</template>
到Eclipse Foundation;下次我可以给你半天的薪水给你这个信息???