gpt4 book ai didi

linux - Makefile PHONY 在大文件中的使用

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:29 29 4
gpt4 key购买 nike

我有使用 .Phony 的 Makefile,它工作正常 我的问题是有更简洁的方式来编写它而不是在每个目标之前

all: app1 app2 

.PHONY: app1
app1:
echo "from app 1"

.PHONY: app2
app2:
echo "from app 2"

我有很多其他目标(看起来都一样),有没有一种更简洁的方法可以在每个目标之前一遍又一遍地编写它?

最佳答案

.PHONY 可以有任意多的先决条件:

.PHONY: all app1 app2

你可以把它放在你的 Makefile 的任何地方,而不仅仅是在假目标的规则之前:

.PHONY: all app1 app2

all: app1 app2

app1:
echo "from app 1"

app2:
echo "from app 2"

请注意,如果您有“很多看起来相同的其他目标”,make 有一些不错的功能,您可以使用这些功能来分解相似性:

APPS := app1 app2

.PHONY: all $(APPS)

all: $(APPS)

$(APPS): app%:
echo "from app $*"

($*,在秘诀中,被扩展为 app% 模式的主干)。

Make 非常智能,您甚至可以让它自动神奇地检测潜在目标,而不必明确列出它们(APPS := app1 app2...)。但在这里,我们需要更多地了解您的真实项目组织。例如,假设每个 appX 都有一个对应的 appX.todo 文件,并且构建命令类似于 buildapp appX.todo appX .然后,以下 Makefile 将自动执行所有操作:

TODO := $(wildcard *.todo)
APPS := $(patsubst %.todo,%,$(TODO))

.PHONY: all $(APPS)

all: $(APPS)

$(APPS):
buildapp $@.todo $@

($@ 被扩展为规则的目标)。

关于linux - Makefile PHONY 在大文件中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51512910/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com