1. 程式人生 > >關於make依賴檔案的自動生成

關於make依賴檔案的自動生成

  在GNU make中文手冊這本書中,3.14節講到了依賴檔案的自動生成,如下圖

  圖中的規則對C原始檔和Makefile在同一目錄,是正確的。但是不在同一目錄的又希望依賴檔案在對應的目錄下,比如src/log/log_file.c,希望依賴檔案log_file.d生成在src/log/下。因為gcc(aix平臺xlc編譯器亦如此)生成的依賴檔案內容中目標檔名沒有帶路徑,例如下所示log_file.o: src/log/log_file.c src/log/log_file.h src/log/log_type.h \
 src/log/../base/io_ext.h
  所以sed就找不到src/log/log_file.o而替換了,改正後的規則如下
%.d: %.c
    $(CC) $(CFLAGS) $(INCS) $< $(MFLAGS) 
[email protected]
$$$$;\    sed 's,$(*F).o[ :]*,$*.o [email protected]: ,g' < [email protected]$$$$ > [email protected];\    $(RM) [email protected]$$$$
  該規則對C原始檔和Makefile在同一目錄也適合,生成後的依賴檔案內容如下
src/log/log_file.o src/log/log_file.d: src/log/log_file.c src/log/log_file.h src/log/log_type.h \
 src/log/../base/io_ext.h posted on 2018-11-16 12:08
春秋十二月
閱讀(177) 評論(0)  編輯 收藏 引用 所屬分類: System