有没有办法验证给定目标是否在 makefile 中标记为 .PHONY?

Is there a way to verify that given targets are marked .PHONY in makefile?

我在不同的项目中有一堆 make 文件,我想根据所有目标的某些标准或目标列表标记为 .PHONY。

我不确定这样的测试是否已经存在或者是否可以引入一个?

据我所知,没有。

make / gmake 本身没有打印的功能。

但是,很容易从 make 的 dependency/target 数据库输出中找到自己:

make -nsp --no-print-directory --always-make
      |||   |                     |
      |||   |                     run, no matter whether
      |||   |                     parts have already been built
      |||   |                     
      |||   don't print the directory structure
      |||
      ||\--- print the database
      |\---- be silent, otherwise
      \----- don't actually build anything

打印出 make 计算出的所有目标。

make -nsp --no-print-directory --always-make | grep -E '^\.PHONY:'

打印所有依赖于.PHONY“伪”目标的目标。

然后您可以随心所欲地处理该列表:)