make / Makefile:CLI选项可“禁用”来自目标的依赖性

时间:2019-05-30 18:10:02

标签: makefile

我正在研究非常成熟的Makefile中使用的某些软件的功能,以查看该功能是否可以合并到流程中。有如下目标:

my_target: dependency_1 dependency_2
        echo foo
        touch bar
        # etc...

在常规使用中,总是在执行my_target的命令之前调用dependency_2。但是出于探索目的,我想从其自己的make命令中有选择地调用dependency_2。然后将my_target设置为可能的几次,而不必每次都重新执行dependency_2。

暂时,我只是将my_target复制/粘贴到my_target_2并从my_target_2中删除了依赖项(很容易),但是我想知道是否有命令行选项可以禁用目标的依赖项而不修改文件。

编辑:dependency_2是PHONY目标

2 个答案:

答案 0 :(得分:1)

  

但出于我的探索目的,我想从其自己的make命令中有选择地调用dependency_2

这很容易完成,make dependency_2

  

然后将my_target设置为可能的几次,而不必每次都重新执行dependency_2

通常,dependency_2应该是磁盘上的文件,因此make会跳过重建它的操作,直到其自身的先决条件(源文件)被更改为止。

但是,如果dependency_2是.PHONY目标(“假文件”),则在每次运行时重建。在这种情况下,您仍然可以像这样愚弄它:

echo "dependency_2:;@:" | make -f Makefile -f -

但是,make会发出警告,要求您覆盖Dependency_2的配方。

答案 1 :(得分:1)

我想不出没有编辑makefile的办法。

您可以将dependency_2放入变量中,然后在my_target的先决条件列表中使用该变量:

dependency_2 = dependency_2

my_target : dependency_1 $(dependency_2)

然后,当您不想重建它时,运行make dependency_2=将变量重置为空。