2017-02-07 69 views
-1

我正在研究混合C和C++(當然在不同的文件)的項目。除了調試之外,我希望能夠從C代碼打印和保存/加載數據結構。當然,我希望代碼是自動生成的,並且我有幾個腳本可以通過python解析C代碼來實際管理作業,並通過讀取結構成員來完成作業。c元與cmake依賴問題

然而,有一個問題的高招 - 我使用cmake來構建項目,讓我自動構建這些項目,但是當我看着事物的「依賴」一側時 - 即因爲cmake沒有不知道我的腳本是解析代碼(因此也就是頭文件),因此輸出取決於腳本,C文件,以及它導入的頭文件和它們導入的頭文件等。

我有發現如何讓gcc給我一個給定文件的當前依賴樹,但我意識到有一個問題與cmake集成 - 即一旦我聲明瞭生成的文件的依賴關係,cmake將不會自動重新檢查以查看如果依賴列表已被更改。因此,如果C文件開發人員在某處添加了新的include語句,它將重新編譯一次,但不會重新編譯以更改新的頭文件。

例如:

最初,

A.c ----includes----> B.h

編譯

則A被修改,使得

A.c ----includes----> B.h | └---> C.h

但是將來對C.h的更改不會導致腳本重新運行,因爲cmake對輸出依賴關係具有過時的視圖。

有沒有辦法在cmake中解決這個問題?

另外,是否有一種支持的方式來獲取cmake已經支持的源代碼中的C/C++元數據?

謝謝。

回答

0

有一個想法 - 我可以讓我的腳本將依賴列表轉儲爲我的構建導入的.cmake文件 - 這會觸發cmake在每次依賴關係發生更改時重新運行,這將保持依賴關係信息至今。

任何人都看到這個問題嗎?