2011-12-11 108 views
1

今天,當我用--debug = v構建我的項目時,我注意到了一些我不太明白它意味着什麼的東西。include makefile,什麼(搜索路徑)(no〜expansion)...是什麼意思?

就在他包含「子makefiles」的頂部,有一個奇怪的打印輸出,告訴我(搜索路徑)(no〜expansion)...這是什麼意思?

打印輸出看起來是這樣的:

Reading makefiles... 
Reading makefile `Makefile'... 
Reading makefile `make_pc.mk' (search path) (no ~ expansion)... 
Reading makefile `print_ring/make.mk' (search path) (no ~ expansion)... 
Reading makefile `vendor/unity/make.mk' (search path) (no ~ expansion)... 
Reading makefile `test01/make.mk' (search path) (no ~ expansion)... 

在使用主Makefile中的線包括如下所示:

TEST := test01 
include $(TEST)/make.mk 

而且一個包含生成文件看起來是這樣的:

CFLAGS += -Itest01/ 
OBJ += test_main.o 
test_main.o: test01/test_main.c 
    @ echo ".compiling" 
    $(CC) $(CFLAGS) -o [email protected] $< 

有更好的方式來玩搜索路徑嗎?但是會擴大到我的UNIX用戶主目錄?

注意:我在Linux(Ubuntu)機器上這樣做。

注意:所有的文件可以在這個github project找到。

/感謝

回答

3

有些信息是針對人的調試製作本身,而不是在調試自己的項目的建設基礎設施,因此,如果它沒有真正證明或特定用途的追查,這不是太奇怪你自己的構建問題。

也就是說,你可以用GNU Make源碼花費幾分鐘的時間來計算這些含義。

(搜索路徑)的是使內部RM_INCLUDED標誌,(我oversummarizing)是指這個Makefile經include遇到的另一個makefile文件中,並可能已被檢查,以找到它-I搜索路徑。

(無〜擴張)是其內部RM_NO_TILDE標誌,並在此評論中製作的read.c解釋:

/* Expand ~ in FILENAME unless it came from `include', 
    in which case it was already done. */ 

GNU製作確實expand ~ to home directories,並且這個標誌的發生停止它兩次 - 我想這可能會影響一些非常不尋常的文件系統佈局。