2014-01-23 74 views
0

My previsou question for sub-folder makefile遞歸構建或不寫Makefile文件

TOPDIR 
| 
├── a 
│ ├── a.c 
│ └── a.h 
├── b 
│ ├── b.c 
│ └── b.h 
├── c 
│ ├── c.c 
│ └── c.h 
├── include 
│ └── common.h 
├── root 
│ └──main.c 
└── Makefile 

以上是我的項目文件樹視圖,我寫了一些makefile,但似乎它遵循問題:

  • 它無法識別,如果我在重新編譯期間修改了一些頭文件

根據TOP鏈接,您可以找到我以前的makefile,現在I w一個改變我的風格makefile,我想實現以下幾件事:

  • TOPDIR只有一個makefilemakefile可以先拿到下我的項目樹中的所有源文件,然後編譯它們。

  • 我需要生成一個良好的相關性,因此,它可以幫助識別,如果我更新過程中的一些頭文件重新編譯

任何建議或例子嗎?

回答

0

我建議使用依賴生成工具,例如makedepend(http://en.wikipedia.org/wiki/Makedepend)或者-m選項之一(gcc)(http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Preprocessor-Options.html#Preprocessor-Options),如果您使用它來生成依賴文件,那麼您將從makefile中包含這些文件。理想情況下,每個輸出文件都有一個依賴文件,並且依賴文件列表既包含輸出文件的依賴關係,也包含其自身的依賴關係(即,每個行重複一次對象文件和一次重複依賴關係文件)。這樣,您的依賴文件將在必要時自動重新生成。類似這樣的:

SOURCES=#... 
DEPS=$(addprefix .dep/,$(addsuffix .mk,$(SOURCES)) 
-include $(DEPS) 
.dep: 
    mkdir .dep 
.dep/%.mk: | .dep 
    # Rule for generating the .dep/foo.c.mk, which holds both dependencies for 
    # foo.c and .dep/foo.c.mk