繁体   English   中英

按顺序使用命令运行makefile

[英]Run makefile with command in order

当您在CLI中输入make时,我有以下运行所有​​目标的Makefile,我知道您可以使用特定的目标运行make,但是有没有一种方法可以通过目标的几个运行make?

例如通过cli run module1 pack cleanup

用这个命令

  1. 模块1
  2. 清理

(为此,module2将不会运行),并且我不想为上述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等的先决条件。

您不想“按顺序”运行它们。 make的全部目的是决定要做什么和以什么顺序进行。 Makefile用于列出规则和依赖性,因此make可以正常工作。

如果要命令按顺序运行,请编写脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM