2010-08-12 68 views
6

經過近十年的C#和VC++編碼,我回到了linux-g ++ -make-emacs環境。如何檢測製作依賴列表中的標題更改

嘗試刷新寫一個make文件我沒有太多的問題,我的記憶,但我在下面的問題迷迷糊糊的,我承認我不記得我是如何從過去解決它:

比方說,一個特定的.cpp文件對其他幾個頭文件有一些依賴關係(把相應的頭文件放在一邊很容易處理)......檢測一些.h文件被改變的最好方法是什麼?

我當然不喜歡把它們放在我的目標 - 依賴列表的想法,因爲這是一個手動和容易出錯的過程!

簡單的答案當然是在每當有一個.h變化時建立清潔,但我無法真正記得標準方式是什麼......。

在VC++我沒有處理這個,因爲IDE在處理依賴關係非常好......

回答

6

automated dependencies。 gcc與-M -MD -MT等標誌將解析你的文件並計算依賴關係。通過sed傳遞它們。谷歌會找到很多例子。

1

正如@deinst提到的,gcc有能力輸出你的cpp直接和間接使用的所有頭文件。你需要的是大致如下:

obj-file: src-file 

# dep file should be recreated each time header file or header file it depends on is changed 
dep-file: src-file 
    gcc -M ...... > dep-file 
    modify dep-file to make dep-file depend and all header files too 

include dep-file 

它是在項目中,我是從事執行一次,但全面實施的想法是漫長而棘手的一個。

如果您有可能考慮支持自動恢復功能的更高版本的工具,例如cmakescons。我personaly與cmake合作 - 每個程序員都可以寫一個cmake文件,並且自動刪除是免費的。