【问题标题】:include makefile, what does (search path) (no ~ expansion)... mean?包括makefile,(搜索路径)(无〜扩展)......是什么意思?
【发布时间】:2011-12-11 11:53:11
【问题描述】:

今天,当我使用 --debug=v 构建我的项目时,我注意到了一些我不太明白它的含义的东西。

在他包含“子生成文件”的顶部,有一个奇怪的打印输出告诉我(搜索路径)(没有~扩展)......这是什么意思?

打印输出如下:

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 中使用 include 的行如下所示:

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找到。

/谢谢

【问题讨论】:

    标签: makefile gnu-make


    【解决方案1】:

    其中一些信息是针对调试 Make 自身的,而不是调试他们自己项目的构建基础架构的,因此,如果它没有真正记录在案或没有特别用于跟踪您自己的构建问题,也就不足为奇了。

    也就是说,您可以花几分钟时间了解 GNU Make 源代码,了解这些含义。

    (search path) 是 Make 的内部 RM_INCLUDED 标志,这(我过度总结了)意味着这个 makefile 是通过另一个 makefile 中的 include 遇到的,-I 搜索路径可能有已检查找到它。

    (no ~ expansion) 是它的内部 RM_NO_TILDE 标志,在 Make 的 read.c 中的这条评论中有解释:

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

    GNU Make 确实是expand ~ to home directories,并且这个标志阻止它发生两次——我想这可能会对一些非常不寻常的文件系统布局产生影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-28
      • 2017-06-29
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      相关资源
      最近更新 更多