2012-07-25 64 views
3

我正在使用一對boost庫並使用下面的規則來生成自動依賴關係。我認爲boost頭文件確實減慢了編譯的速度,因爲如果沒有Makefile中的依賴項,那編譯項目的速度就要快10倍。有沒有辦法提高生成的依賴關係的速度?自動生成的依賴關係導致編譯速度緩慢

%.o: %.cc 
    $(CXX) $(CFLAGS) $(INCLUDES) -MD -c $< -o [email protected] 
    @mv $*.d .deps/ 
    @cp .deps/$*.d .deps/$*.tmp 
    @sed -e 's;#.*;;' -e 's;^[^:]*: *;;' -e 's; *\\$$;;' \ 
    -e '/^$$/d' -e 's;$$; :;' < .deps/$*.tmp >> .deps/$*.d 
    @rm .deps/$*.tmp 
+3

由於您可能不會更改提升標題,因此沒有理由將它們添加爲依賴項。所以你可以尋找一種方法來排除boost頭文件(也可能是其他系統頭文件)。 – 2012-07-25 06:58:44

+0

(刪除了我的答案,因爲我意識到它並不真正與您的具體問題有關)。就我個人而言,我寫了一個自定義Python腳本,它在<1秒內掃描我的'src'並寫入一個非常簡單的(無*規則或由GCC生成的依賴項)Makefile。 – Oleg2718281828 2012-07-25 08:49:04

+0

我在ruby中做了同樣的事情來爲我的耙構建生成依賴文件。它只是省略<>中的所有括號。 – 2012-07-25 08:56:06

回答

2

由於您可能不會更改boost頭文件,因此沒有理由將它們添加爲依賴項。通過使用-MMD來生成依賴文件,系統頭文件應該被忽略,因此你的依賴文件應該變小,這意味着必須掃描更少的硬盤來查看文件是否仍然是最新的等等。當然,你有以包含<>不是「」的標題。