有没有办法在包含后得到生成的 Makefile?
Is there a way to get the resulting Makefile after includes?
在 (GNU) Makefile 中,可以这样做:
include foo.mk
all:
@echo "Hello, world!"
有没有办法让 make 在包含 foo.mk 之后吐出 Makefile?类似于C预处理器展开宏等之后?
更新:下面的评论者要求我指定我要解决的问题。我希望触发重建 when/if 对底层的 Makefile and/or 进行了更改,包括 makefile。我找到了一个类似这样的食谱:
.PHONY: bar
SHAFILE := foobar.sha256
$(SHAFILE): bar
@sha256sum Makefile | cmp -s - $@ || sha256sum Makefile > $@
...
%.o: %.c $(SHAFILE)
$(CC) -c -o $@ $< $(CFLAGS)
(显然,校验和应该是包含include的Makefile的校验和,但这是一个开始。)
Is there a way to get make to spit out the Makefile after foo.mk has been included?
没有
gmake -d
有大量调试输出,其中一些指示正在读取哪些 makefile:
$ gmake -d|grep Reading
Reading makefiles...
Reading makefile `GNUmakefile'...
Reading makefile `foo.mk' (search path) (no ~ expansion)...
如果有递归包含指令或条件下的指令,这可能会有所帮助。
也许您可以告诉我们您想要解决的实际问题?
警告:我还没有尝试过,只阅读了手册。
在所有 include
行(包括嵌套包含的传递集,甚至由文本替换创建或由函数构建的行)之后,Make 变量 MAKEFILE_LIST
将引用您的所有 makefile。
所以在你的文件末尾添加一个依赖就足够了,比如
%.o: $(MAKEFILE_LIST)
您实际上不需要有效 Makefile 的内容,只需要组成它的文件列表。
在 (GNU) Makefile 中,可以这样做:
include foo.mk
all:
@echo "Hello, world!"
有没有办法让 make 在包含 foo.mk 之后吐出 Makefile?类似于C预处理器展开宏等之后?
更新:下面的评论者要求我指定我要解决的问题。我希望触发重建 when/if 对底层的 Makefile and/or 进行了更改,包括 makefile。我找到了一个类似这样的食谱:
.PHONY: bar
SHAFILE := foobar.sha256
$(SHAFILE): bar
@sha256sum Makefile | cmp -s - $@ || sha256sum Makefile > $@
...
%.o: %.c $(SHAFILE)
$(CC) -c -o $@ $< $(CFLAGS)
(显然,校验和应该是包含include的Makefile的校验和,但这是一个开始。)
Is there a way to get make to spit out the Makefile after foo.mk has been included?
没有
gmake -d
有大量调试输出,其中一些指示正在读取哪些 makefile:
$ gmake -d|grep Reading
Reading makefiles...
Reading makefile `GNUmakefile'...
Reading makefile `foo.mk' (search path) (no ~ expansion)...
如果有递归包含指令或条件下的指令,这可能会有所帮助。
也许您可以告诉我们您想要解决的实际问题?
警告:我还没有尝试过,只阅读了手册。
在所有 include
行(包括嵌套包含的传递集,甚至由文本替换创建或由函数构建的行)之后,Make 变量 MAKEFILE_LIST
将引用您的所有 makefile。
所以在你的文件末尾添加一个依赖就足够了,比如
%.o: $(MAKEFILE_LIST)
您实际上不需要有效 Makefile 的内容,只需要组成它的文件列表。