2011-12-11 79 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,并且这个标志的发生停止它两次 - 我想这可能会影响一些非常不寻常的文件系统布局。