gnu-make - 在Makefile中,知道GNU make是否在--dry-run中吗?

标签 gnu-make

有没有办法知道Makefile中是否使用--dry-run选项调用了GNU make?

我正在寻找类似的东西:

ifeq (dry-run)
    ; # do not create a rule
else
    ; # create a custom rule
endif

这也可以是任何其他解决方法。

原因是我引用了另一个依赖于Makefile目标的.PHONY的规则,因此在空运行时,它显示所有目标,而不仅仅是过时的目标。

最佳答案

您可以检查MAKEFLAGS的值以查看设置了哪些标志。如果存在-n选项,则说明make在空运行模式下运行(不管命令行上指定了哪个选项,MAKEFLAGS始终包含短单字符选项(如果存在的话)。

像这样的东西:

ifeq (n,$(findstring n,$(firstword -$(MAKEFLAGS))))
  # run with -n / --dry-run
else
  # not run with -n / --dry-run
endif

关于gnu-make - 在Makefile中,知道GNU make是否在--dry-run中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41302443/

相关文章:

makefile - GNU 使 "Removing intermediate files"

makefile - 软件基础-自动评分

c - 另一个共享库的 OCaml 共享库

qtcreator 项目的 cmake 与 gmake

gnu-make - 如何根据传递给命令行变量的值有条件地构建目标及其所有依赖项?

linux - 有没有办法定义自定义隐式 GNU Make 规则?

makefile - 制作 : Setting target-specific variables in static pattern rules

makefile - 无法使用 nmake 将重定向符号 (>>) 写入文本文件

makefile - 在与 src 不同的目录中构建输出的 GNU Make 模式

c - 两个相同的模式规则会发生什么?