Я пишу makefile, который создает несколько платформ (windows, iOS и т. Д.) Для разных конфигураций (отладка, выпуск). Мне удалось заставить его работать, он работает правильно, но я хотел бы сделать некоторые из моих правил более универсальными, чтобы не повторять их для каждой конфигурации.Использование шаблонов makefile в вызове функции
Каждый файл хранится в определенной структуре папок. Например, если вы создаете для iOS конфигурацию отладки, результирующий файл хранится в ios/debug. В качестве примера у меня есть правила для создания этих каталогов:
define libdir
$(BINDIR)/$(strip $1)/$(strip $2)
endef
$(call libdir, ios, debug):
mkdir -p $(call libdir, ios, debug)
$(call libdir, ios, release):
mkdir -p $(call libdir, ios, release)
Я должен буду повторить эти правила для каждой конфигурации. Это не так много, но это может стать болью для поддержания. Я хотел бы сделать это более общее, что-то вроде этого (я знаю, что это не работает):
define libdir
$(BINDIR)/$(strip $1)/$(strip $2)
endef
$(call libdir, %, %):
mkdir -p $(call libdir, ??, ??)
Что бы создать любой каталог с данной структурой. Есть идеи?
Почему вы используете 'strip' и как вы хотите вызывать make для создания, например, конфигурации отладки для iOS? – Beta
Я использую 'strip', потому что иногда я использую пробелы при вызове функций, возможно, из-за опечаток. Он просто гарантирует, что пространство не имеет значения при передаче аргументов функции –
У меня есть такие приложения, как 'iphone-debug',' iphone-release' и 'iphone' для обоих –