簡體   English   中英

運行部分生成的Makefile

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

或者,如果您只想構建和打包app1app2

$ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM