У меня есть структура проекта, которая выглядит примерно так:
.
└── src
├── Module1
│ ├── source1.cc
│ ├── source2.cc
│ └── source3.cc
├── Module2
│ ├── source1.cc
│ ├── source2.cc
│ └── source3.cc
└── Module3
├── source1.cc
├── source2.cc
└── source3.cc
У меня есть неявное правило, которое создает объектный файл для каждого исходного файла и поддерживает структуру каталогов (например, src/Module1/source2.cc
будет скомпилировать в obj/Module1/source2.o
).
Однако теперь я хотел бы иметь неявное правило для создания архивных файлов для каждого модуля. Например, каждый объектный файл, скомпилированный из src/Module2
, будет добавлен в obj/Module2.a
. Моя первая идея выглядела очень похоже на мое неявное правило для объектных файлов:
obj/%.a: $(wildcard obj/%/*.o)
@mkdir -p $(@D);
ar -crs "$@" $^;
Это отразило бы работу по компиляции объектных файлов с другим неявным правилом. Однако проблема заключается в том, что символ %
не раскрывается.
Есть ли способ получить доступ к %
из неявного правила при вызове функции подстановочного знака?