0
在這一點上,我想找到一些有用的東西(this和this,雖然沒有必要閱讀,但這個問題應該簡單得多)。
我想創建一個使用子動態(未知)數量的子文件的子任務的make任務。你能做這個嗎?
build/%.js: $(shell find apps/% -type f -name '*.js')
說你想要的最終目錄樹看起來像這樣:
build/
build/page.js
build/popup.js
apps/
apps/page/
apps/page/index.js
apps/page/lib/
apps/page/lib/a.js
apps/page/lib/b.js
apps/popup/
apps/popup/index.js
當您更改任何index.js
文件,或嵌套在lib/*.js
的文件,那麼對應的文件夾應該重建。
你如何用make
做到這一點?沒有重複性,如果你有一堆非DRY的類似構建任務,就很容易做到。
我也試過這樣:
build/%.js: apps/%/index.js apps/%/lib/*.js
但是,只有當存在於每個項目lib/*.js
工作。上面的示例目錄樹中的「popup」項目沒有這個,所以它永遠不會構建。
所以基本上,這些目標需要是「可選的」。一個簡單的例子是這樣的:
build.js: $(shell find apps -type f -name '*.js')
這將創建一個build.js
文件,如果任何*.js
文件apps/
文件夾內改變。基本上這就是我要去的,主要區別是我想有一個變量名涉及:
build/%.js: $(shell find apps/% -type f -name '*.js')
但是,這並不工作,因爲它似乎%
不在$(shell)
函數內部評估(不知道該如何工作或記錄在哪裏)。但基本上,這就是我想要做的。
這可能嗎?