На данный момент я хочу найти что-то, что работает (this и this, не нужно читать, этот текущий вопрос должен быть намного проще).
Я хочу создать задачу make, которая работает в подкаталогах с динамическим (неизвестным) количеством подфайлов. Можете ли вы сделать это в 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
? Не повторяясь, это просто сделать, если у вас есть куча похожих задач сборки, которые не являются СУХОЙ.
Я также попытался это:
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)
(не уверен, как это должно работать или где это задокументировано). Но, по сути, это все, что я хочу сделать.
Возможно ли это?