2015-10-21 66 views
2

我想,以解決我的問題,以創建Eclipse CDT的一個新項目模板問here。 @Jonah Graham在他對1的回答中提供了非常詳細的介紹,這讓我獲得了大部分的成功。Eclipse CDT的項目模板 - 設置下拉選項

但是,我想不出如何設置通過下拉指定的選項;例如在設置/工具設置/ 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文件)。

我可以解決此通過設置「其他方言」標誌,這僅僅是一個字符串,但我想知道如何通過,因爲這些在其他地方拿出一個下拉做到這一點。

回答

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-arraysimple加上內部名稱顯示名稱)。

+1

我更新https://github.com/jonahkichwacoders/example_cdt_template將這一設置,如果有幫助。 –

+0

這不適合我 - 我沒有設置任何東西。我複製了上面的內容,然後再次檢查該值是否顯示在下拉列表中。我也嘗試過使用「gnu.cpp.compiler.dialect.C++ 11」的值,這是保存在.cproject中的值,但這些都不適合我。 – sfjac

+0

糟糕 - 我收回它。我上面做了什麼沒有工作,但當我改變你建議使用「gnu.cpp.compiler.dialect.C++ 11」時,它的工作。 – sfjac