运行 包含命令的 makefile

Run makefile with command in order

我有以下 Makefile,当你在 CLI 中输入 make 时,它​​ 运行 所有目标,我知道你可以 运行 具有特定目标的 make 但是有没有办法 运行 制作多个目标?

例如 通过 cli 运行 module1 pack cleanup

按此顺序

  1. module1
  2. pack
  3. cleanup

(仅模块 2 不会 运行) 我不想为上述 3 个步骤创建新目标 这是例子

all: module1 module2

.PHONY: module1
module1:
    @echo "run module 1"
    DIR=$(PWD)
    @echo $(DIR)

.PHONY: module2
module2:
    @echo "run module2”

pack:
    pack $(DIR)

cleanup: 
    gbt clean $(DIR)

您可以为此使用 MAKECMDGOALS。类似于:

PACK := $(filter pack,$(MAKECMDGOALS))
CLEANUP := $(filter cleanup,$(MAKECMDGOALS))

module1: $(PACK) $(CLEANUP)
        ...

module2: $(PACK) $(CLEANUP)
        ...

pack:
        pack $(DIR)
cleanup:
        git clean $(DIR)

如果您不在命令行中提供 packcleanup 目标,则相关变量 PACKCLEANUP 将是空字符串并赢得'不被列为 module1module2

的先决条件

你不想运行他们"in order"。 make 的全部目的是让它决定做什么以及按什么顺序。 Makefile 用于列出规则和依赖项,以便 make 可以正常工作。

如果你想要命令运行,写一个脚本。