[英]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.