首页 > 解决方案 > 如何在 Makefile 目标中重复相同的先决条件?

问题描述

我想在Makefile中做这样的事情(有更多任务):

.PHONY: sep tasks task1 task2 task3

tasks: task1 sep task2 sep task3

task1:
    @echo task 1

task2:
    @echo task 2

task3:
    @echo task 3

sep:
    @echo

目标的结果tasks是:

task 1

task 2
task 3

sep目标仅在第一次执行。这是完全正常的。但我希望每次都执行。有没有办法强制重复?

一种解决方法是使用sep如下几个目标:

tasks: task1 sep1 task2 sep2 task3

并且通过分组目标定义,所有目标都sep可以一次性定义:

sep1 sep2 &:
    @echo

结果是正确的:

task 1

task 2

task 3

我想知道是否有可能只有一个行为具有相同的行为sep并强制重复此先决条件。

标签: makefile

解决方案


这不可能。每次调用 make 都无法让 make 多次构建相同的目标。

无论如何,依赖这种顺序是错误的:如果您曾经想使用并行作业 ( make -j) 来让您的构建运行得更快,那么这不会达到您想要的效果。

最好的办法就是简单地将“sep”放入目标的配方中:

task1:
        @echo
        @echo task 1

等等


推荐阅读