反向递归Makefile-禁止输入/离开目录消息



我知道这里有很多讨论,为什么不使用递归Makefile。但不是相反。使用这个概念(反向递归(达到可用性的目的。有了这个系统,我只需要一个打开的shell就可以向git添加新的或修改过的文件,还可以在同一路径中键入make来重建更改后的源并链接它们。

对我的反向递归Makefile实现的简短描述。我在这里有以下简化的树:

$ tree
.
├── dir
│   ├── Makefile
│   └── subdir
│       ├── Makefile
│       └── subsubdir
│           └── Makefile
└── Makefile
3 directories, 4 files

根生成文件的内容:

all:
@echo 'Makefile-root: all'
arg1:
@echo 'Makefile-root: arg1'
arg2:
@echo 'Makefile-root: arg2'
.PHONY: all arg1 arg2

RR Makefile:子目录中的所有其他Makefile都有相同的内容:

%::
make -C .. $@
all:
make -C ..
.PHONY: all

当我在subsubdir:中键入make时输出

$ make
make -C ..
make[1]: Entering directory '/home/krj/projects/XU-Loader/test/dir/subdir'
make -C ..
make[2]: Entering directory '/home/krj/projects/XU-Loader/test/dir'
make -C ..
make[3]: Entering directory '/home/krj/projects/XU-Loader/test'
Makefile-root: all
make[3]: Leaving directory '/home/krj/projects/XU-Loader/test'
make[2]: Leaving directory '/home/krj/projects/XU-Loader/test/dir'
make[1]: Leaving directory '/home/krj/projects/XU-Loader/test/dir/subdir'

当我在subsubdir:中键入带参数的make时输出

$ make arg1
make -C .. arg1
make[1]: Entering directory '/home/krj/projects/XU-Loader/test/dir/subdir'
make -C .. arg1
make[2]: Entering directory '/home/krj/projects/XU-Loader/test/dir'
make -C .. arg1
make[3]: Entering directory '/home/krj/projects/XU-Loader/test'
Makefile-root: arg1
make[3]: Leaving directory '/home/krj/projects/XU-Loader/test'
make[2]: Leaving directory '/home/krj/projects/XU-Loader/test/dir'
make[1]: Leaving directory '/home/krj/projects/XU-Loader/test/dir/subdir'

这可能只是一个表面问题,但如果不使用subsubdir中的参数--no-print-directory调用make,我如何抑制Leaving/Entering消息?

$ make --no-print-directory
make -C ..
make -C ..
make -C ..
Makefile-root: all

曾尝试在每个RR Makefile中添加MAKEFLAGS += -no-print-directory,但将递归函数分解为根Makefile。

这是我的一个使用错误。我使用了-no-print-directory而不是--no-print-directory,因为我首先在SO上搜索了一个类似的问题,并找到了这个答案。不幸的是,不要研究GNU制造的手册页面。

使用--no-print-directory,这是有效的,没有任何问题:

MAKEFLAGS += --no-print-directory
%::
make -C .. $@
all:
make -C ..
.PHONY: all

相关内容

最新更新