首页 > 解决方案 > 将make文件作为所有进程运行

问题描述

我已经创建了这个简单的makefile,我想运行所有的进程witnmake

虽然它只运行第一部分module1而不运行,但module2我在这里缺少什么?

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



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

如果我运行make module2module2 成功执行,但我希望所有都在make命令中运行,并且据我在网上阅读,这是它应该如何工作的,这里有什么问题?

标签: shellmakefilegnu-make

解决方案


文档...

默认情况下,目标是 makefile 中的第一个目标(不包括以句点开头的目标)。因此,通常编写 makefile 以使第一个目标是编译它们描述的整个程序或程序。如果 makefile 中的第一个规则有多个目标,则只有规则中的第一个目标成为默认目标,而不是整个列表。您可以使用 .DEFAULT_GOAL 变量从您的 makefile 中管理默认目标的选择(请参阅其他特殊变量)。

所以你只需要提供一个合适的默认目标——all是“传统的”...

all: module1 module2

所以完整的makefile将是...

all: module1 module2

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

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

推荐阅读