2017-06-25 58 views
1

我試圖將一個C項目導入由waf管理的eclipse(CDT)。有一個由waf生成的預定義列表(當運行./waf configure時)。該列表必須導入到Project->Properties->C/C++ General/Paths and Symbols/Symbols/GNU C,以便索引器知道它們並且不會打印錯誤。該列表(使用GUI時)存儲到.cproject文件中。我創建了一個構建目標,運行./waf configure並將列表存儲到名爲DEFINES.txt的文件中。運行構建目標後,如何自動更新.cproject的列表,其值爲DEFINES.txt如何在運行構建目標之後向.cproject文件添加預定義

我想到了以下的解決方案及其後續問題:

  1. 解決方案:編寫一個插件。
    問題:什麼是合適的擴展點?
  2. 解決方案:編寫一個調用./waf configure的外部程序讀取DEFINES.txt並將列表寫入.cproject。該程序取代了舊的Build Target。
    問題:這有多安全?我是否允許通過外部程序更改.cproject文件,而不會造成任何問題?
  3. 解決方案:在wscript文件中實現.cproject更新算法。
    問題:對我來說這不是一個解決方案,因爲其他人也使用該項目,而不使用eclipse作爲IDE。所以如果其他開發人員想要構建項目,修改後的wscript會導致錯誤。

有沒有人有更好的想法或建議?

回答

1

這裏是如何去做:

  1. 編寫一個插件:我建議你做什麼是寫的擴展LanguageSettingsProvider。該FAQ有一些更多的信息,但總結是提供程序:

這個擴展點用於促進新的語言設置 提供商。語言設置提供程序用於在編譯器選項(如包含路徑(-I)或預處理器定義 (-D)等)中添加 等項目模型。

  • CMake的有一個選項,以生成.cproject作爲其設定狀態的一部分,所以你可以做同樣的事情。請參閱CMake Wiki以獲取靈感,但總結是,您不要在源代碼控制中存儲和.cproject/.project,並讓CMake(或您的情況下的waf)生成IDE特定的文件。

  • 您也可以使用構建輸出解析器來拾取構建設置,並完全忽略DEFINES.txt。這需要從Eclipse內部爲CDT運行一次構建以查看所有命令,並要求命令在構建輸出中可解析。

  • 相關問題