Я портирую самодельную makefile
установку в набор автоинструментов. Я столкнулся с проблемой, на которую пока не нашел подходящего ответа. Возможно, я просто не использую правильные термины в своих поисках. Будучи полным новичком в области автоинструментов, я, вероятно, просто недостаточно разбираюсь в жаргоне.
Проблема: наш процесс сборки зависит от файла заголовка, который создается из файла csv. (Я не знаю почему. Это то, что есть.) В нашей старой системе мы делали что-то вроде этого:
.PHONY: all
all : header.csv.h $(objects)
header.csv.h:
python prebuild.py
# remainder for building objects and the file lib.a
Найдя эту ссылку для расширения правил по умолчанию, я добавил это к моему Makefile.am
noninst_LIBRARIES = libstuff.a
# .. Additional CXXFLAGS and CPPFLAGS, and listing the sources
all-local: header.csv.h
header.csv.h:
python prebuild.py
Переделанный Makefile
s по-прежнему не работал. Проверка сгенерированного Makefile
для этой части библиотеки показала следующее:
# lots of stuff preceeding
all: all-am
all-am: Makefile $(LIBRARIES) all-local
all-local: header.csv.h
# the rest as above
Прямо там, в all-am:
, и есть проблема. Зависимости $(LIBRARIES)
перечислены первыми и поэтому строятся первыми. Некоторое дальнейшее чтение по расширяющейся ссылке выше показывает, что этого следовало ожидать: нет способа гарантировать порядок. Это достаточно просто "исправить": переместить all-local
перед $(LIBRARIES)
. Однако это исправляет только один раз. Я должен гарантировать, что это всегда строится в первую очередь.
Могу ли я добавить в сценарий configure
элементы, которые будут выполняться в процессе настройки? Как правильно справиться с подобным?