今天当我使用--debug = v构建我的项目时,我发现了一些我不太懂的东西。
在他包含“sub makefile”的顶部,有一个奇怪的打印输出告诉我(搜索路径)(没有〜扩展)......这是什么意思?
打印输出如下:
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)...
使用include的主Makefile中的行如下所示:
TEST := test01
include $(TEST)/make.mk
包含的makefile可能如下所示:
CFLAGS += -Itest01/
OBJ += test_main.o
test_main.o: test01/test_main.c
@ echo ".compiling"
$(CC) $(CFLAGS) -o $@ $<
有没有更好的方式来玩搜索路径?但是〜会扩展到我的unix用户主目录吗?
注意:我在Linux(Ubuntu)计算机上执行此操作。
注意:可以在此github project找到所有文件。
/感谢
答案 0 :(得分:4)
其中一些信息是针对人们进行调试而不是调试自己项目的构建基础架构,因此如果没有真正记录或者特别用于跟踪自己的构建问题,那就不足为奇了。
那就是说,你可以花几分钟时间用GNU Make源代码来弄清楚这些是什么意思。
(搜索路径)是Make的内部RM_INCLUDED
标志,其中(我过分夸大)表示此makefile是通过另一个makefile中的include
和{{1}遇到的可能已经检查过搜索路径以找到它。
(不〜扩展)是其内部-I
标志,并在Make的 read.c 中的此评论中进行了解释:
RM_NO_TILDE
GNU Make确实expand ~ to home directories,并且这个标志阻止它发生两次 - 我想这可能会对一些非常不寻常的文件系统布局产生影响。