Eclipse CDT新项目模板 - 如何添加库

时间:2011-07-15 17:41:23

标签: templates eclipse-plugin eclipse-cdt

在Eclipse CDT Indigo中,有一项新功能允许您将新的C / C ++模板项目添加到新项目向导中。我已经想出如何成功地做到这一点。我可以创建一个仅依赖于简单源文件的基本项目,但现在我想创建一个CPPUnit项目,我想自动添加CPPUnit库。对于我的生活,我无法弄清楚如何实现这一目标。有谁知道怎么做?

2 个答案:

答案 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>

关键部分是知道将两个库dlcppunit放在哪里。密钥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 /

    • 然后在每个项目中(例如' HeloWorldCAnsiProject ')找到template.xml

GNU C浏览选项

  • 插件/ org.eclipse.cdt.managedbuilder.gnu.ui_X.X.X.xxxxx.jar / plugin.xml的

通过逆向工程实施示例

目标 - 设置'Cross GCC Compiler' - &gt;优化 - &gt; '其他优化标志'

  1. 创建一个没有自定义的虚拟C项目
  2. 打开属性。手动设置目标字段。我将'其他优化标志'设置为'COME_FIND_ME'

    enter image description here

  3. 在编辑器中打开.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"/>
    
    • 然后是'string'和'id'type'gnu.c.compiler.option.optimization.flags。

    enter image description here

  4. 在上面列出的'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>
    

    enter image description here

  5. 离开这个示例项目,然后返回到要添加它的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>
    
  6. 就是这样。

    有用的链接

    1. Help - Eclipse Platform - How to register a project template with CDT
    2. Help - Eclipse Platform - Example template
    3. 备注

      以下是MBS追加/设置功能的实时位置:

      • org.eclipse.cdt.managedbuilder.core.source_X.X.X.xxxxx.jar /组织/蚀/ CDT / managedbuilder / templateengine /过程

      enter image description here

      完整模板文件示例

      最后,这是一个代码片段,可以节省您在互联网上搜索的时间。这个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;下次我可以给你半天的薪水给你这个信息???