【发布时间】:2018-08-01 13:28:32
【问题描述】:
我有下面的makefile,看起来像下面
PROJ_DIR := $(CURDIR)
all: pre app app1 app2 app3
apps = app app1 app2 app3
pre:
mkdir temp
app:
cd PROJ_DIR/app ; npm install
app1:
cd PROJ_DIR/app1 ; npm install
...
#Need to wait to app1...n to finish the install process in order to proceed and zip all the app installed artifacts
build:$(apps)
#zip all the apps artifacts
clean:build
rm -rf test
现在,当我使用 make 运行它时,一切都按预期运行。
问题是我想像这样运行部分构建
make -j1 pre app1 build clean(在序列中只有 app1 应该运行而不是 app2 app3 等)这里我有一个问题,因为我有 apps 预请求(来自 Renaud 的提示)这有助于等待我使用make 执行整个make,但如果我想部分运行它,它仍然会运行它们(所有应用程序),是否有一个技巧可以帮助执行类型?
【问题讨论】:
-
build依赖于$(apps),后者扩展为app app1 app2 app3。如果build可以在没有这些目标的情况下完成工作,那么为什么它们是依赖项?你可以删除它们。相反,如果build确实需要先构建这些目标,您希望它如何工作? -
@Thomas - build 需要这个,如果所有应用程序执行都没有完成,它就无法启动,所以我问这里是否有一些技巧
-
我现在只是在猜测您要完成的工作,但也许 order-only prerequisites 是您所需要的。比如:
build: | $(apps). -
@Thomas - 谢谢,我已经用命令
make -j1 pre app1 build clean尝试过(在应用程序前添加|)但我仍然看到app正在运行,即使我输入了命令@ 987654339@ -
@Thomas - 也许我可以用条件声明
apps = app app1 app2 app3?还要别的吗 ?如果我删除必要的$(apps)它适用于部分构建
标签: linux shell makefile gnu-make