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

Mic*_*ert 5 gnu-make

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

我正在寻找类似的东西:

ifeq (dry-run)
    ; # do not create a rule
else
    ; # create a custom rule
endif
Run Code Online (Sandbox Code Playgroud)

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

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

Mad*_*ist 6

您可以检查值MAKEFLAGS以查看设置了哪些标志.如果该-n选项存在,那么您知道make正在空运行模式下运行(MAKEFLAGS始终包含短单字符选项,如果存在,则无论在命令行上指定了哪个选项).

像这样的东西:

ifeq (n,$(findstring n,$(firstword -$(MAKEFLAGS))))
  # run with -n / --dry-run
else
  # not run with -n / --dry-run
endif
Run Code Online (Sandbox Code Playgroud)