2011-07-15 79 views
4

在Eclipse CDT Indigo中,有一項新功能允許您將新的C/C++模板項目添加到新項目嚮導中。我已經想出瞭如何成功做到這一點。我可以創建一個只依賴於簡單源文件的基本項目,但現在我想創建一個CPPUnit項目,我想自動添加CPPUnit庫。對於我的生活,我無法弄清楚如何實現這一目標。有誰知道如何?Eclipse CDT新項目模板 - 如何添加庫

回答

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對於在大多數Linux計算機上處​​於活動狀態的GNU編譯器工具鏈是正確的。

我已經從Eclipse插件org.eclipse.cdt.managedbuilder.gnu.ui_XXXXXXX中提取了鍵名。你可以在Eclipse的plugins文件夾中找到它。如果您需要其他工具集的密鑰,我建議打開plugin.xml文件。在這裏,您應該搜索屬性valueType="libs"。相應的id是您需要在流程文件中操作的關鍵。

如果您還需要操作庫搜索路徑,請搜索valueType="libPaths"。這將導致你到關鍵gnu.cpp.link.option.paths。您可以使用類似於上面所示的過程將其他條目添加到列表中。

4

這是AMAZING這個東西有多難找到。除了的plugin.xml瀏覽,所有的模板提供高效的斜升上執行這些選項:

源參考

模板瀏覽

  • 插件/ org.eclipse.cdt.managedbuilder.gnu.ui_X.X.X.xxxxx.jar /模板/ projecttemplates/

    • 和然後在每個凸出DIR(例如'HeloWorldCAnsiProject')定位TEMPLATE.XML

GNU C選項瀏覽

  • 插件/ org.eclipse.cdt.managedbuilder.gnu.ui_X.XXxxxxx.jar /插入。XML

示例實現逆向工程

目標 - 設置 '跨GCC編譯器' - >優化 - > '其他優化標誌'

  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"/> 
    
    • 它是那麼類型 '字符串' 和 'ID' gnu.c.compiler.option.optimization.flags的。

    在上面關於 'gnu.c.compiler.option.optimization.flags' 列出plugin.xml中enter image description here

  4. 搜索。這裏是我的發現(在線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> 
    

,就是這樣。

有用的鏈接

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

注意

下面是其中MBS附加/設置功能生活:

  • org.eclipse.cdt.managedbuilder.core.source_X.XXxxxxx.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基金會;下次我可以給你半天的工資給你這個信息嗎?

+0

是否有設置下拉菜單的過程?我正在研究其中的一個,並已設法獲得各種庫,包含和其他選項,但我有一個下拉列表,我想設置,但無法弄清楚。 – sfjac

+0

此外,我做了兩次導出過程,並注意到現在有兩個罐子 - 有沒有辦法卸載舊版本?只是炸燬罐子或其他文件修改? – sfjac