Установить произвольные файлы данных в фиксированном месте с помощью Automake?
Как я могу сказать automake
установить произвольные файлы данных в местах, которые я хочу?
У меня есть некоторые файлы, которые мне нужно поместить в определенные места, например, "datafile1
"в моем проекте нужно скопировать в"/usr/MyProduct/flash_memory
".
- "
/usr/MyProduct/flash_memory
"Это абсолютный путь, который я не могу изменить. - "
datafile1
"это двоичный файл данных, который не" построен "make
, но просто должен быть скопированmake install
, - Я не могу терпеть
make dist
, Это должно быть скопированоmake install
(это длинное объяснение, так что, pelase, просто примите это во внимание). - Я скорее не пользуюсь
install-hook
, но предпочитаю иметь более элегантный подход (если это возможно).
Большое спасибо!
1 ответ
Не используйте полные пути в вашем Makefile.am. Когда-либо. Вы можете сказать AutoMake поставить datafile1
в $(datadir)
который будет расширяться до $(prefix)/share/MyProduct
или вы можете определить flash_DIR
расширить до $(prefix)/MyProduct/flash_memory
и поместите файлы туда, но конечный пользователь должен иметь возможность установить $(prefix)
либо /usr
или к чему-то еще. Что вы хотите сделать в Makefile.am:
flashdir = $(prefix)/$(PACKAGE)/flash_memory
flash_DATA = datafile1
(Вероятно, было бы более целесообразно использовать $(prefix)/@PACKAGE@/flash_memory
, поскольку PACKAGE, вероятно, не должен изменяться во время создания, но я не думаю, что это очень важно.)
Затем, когда вы являетесь пользователем, запустите make install
с префиксом, установленным на /usr
, Если вы попытаетесь использовать абсолютный путь в Makefile.am, это запретит поэтапную установку (т.е. настройку DESTDIR), ограничит гибкость пользователя и является неправильным решением. Главное, что сопровождающий пакета не может выбрать окончательное местоположение; это решение для пользователя.