[英]Run partially build of Makefile
我有以下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
pre-requestie(来自Renaud的提示),这有助于在我执行整个程序时等待用make进行make
但是如果我要部分运行它,仍然可以全部运行它们(所有应用程序),是否有一个技巧可以对两种执行类型都有帮助?
不确定我是否了解所有细节,但有一件重要的事情要考虑:make完全按照您的要求去做,不要多做(希望如此)。 因此,如果您告诉它build
取决于您的所有应用程序,那么您就无法期望make在build
所有应用程序之前先build
它。 就这么简单。 它是什么
build: $(apps)
说: build
取决于$(apps)
,换句话说,在完成$(apps)
之前不可能进行build
。
如果要仅使用一个应用程序进行构建,则除了build
...之外还需要其他目标,或者需要更改apps
make变量的定义。 猜猜是什么,这可能是最简单的事情,因为make让您在命令行上执行此操作:
$ make apps='app1' pre build clean
或者,如果您只想构建和打包app1
和app2
:
$ make apps='app1 app2' pre build clean
默认情况下,在命令行上分配的变量优先于Makefile内部的定义。 执行make apps='app1' pre build clean
将执行完全相同的操作,就像您编辑Makefile更改apps
的定义然后执行make pre build clean
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.