如何忽略Makefile中的依赖项检查

时间:2020-07-28 10:44:10

标签: makefile dependencies

我想忽略makefile中的依赖项检查。 例如,请查看此代码。

test:: test1 test2
    @echo "test"

test1:: back3
    @echo "test1"

test2:: back3
    @echo "test2"

back3::
    @echo "back3"

“进行测试”的结果

back3
test1
test2
test

但是我想得到低于结果的结果。

back3
test1
back3  <---- I want to run back3 again.
test2
test

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以use Make recursively

test: test1 test2
    @echo "test"

test1:
    $(MAKE) back3
    @echo "test1"

test2:
    $(MAKE) back3
    @echo "test2"

back3:
    @echo "back3"

或使用"canned recipe"

define run_back3
@echo "back3"
endef

test: test1 test2
    @echo "test"

test1:
    $(run_back3)
    @echo "test1"

test2:
    $(run_back3)
    @echo "test2"

答案 1 :(得分:0)

您写

我想忽略Makefile中的依赖项检查。

,这似乎意味着您希望在构建目标之前先重建每个目标的所有先决条件,尤其是对该目标 进行构建,这样才能多次构建先决条件。

make根本不能那样工作。在每次运行中,make最多一次构建每个目标。先决条件列表可帮助您确定需要构建的目标,以什么顺序构建,但指定先决条件不应视为调用子例程。

如果确实想要某种类似于调用子例程的功能,则需要在规则的配方中而不是在其先决条件列表中表达它。您的other answer提出了两种选择。在这些例子中,递归make例子更通用。一个基于定义自定义函数的函数特定于GNU make