Установить произвольные файлы данных в фиксированном месте с помощью 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), ограничит гибкость пользователя и является неправильным решением. Главное, что сопровождающий пакета не может выбрать окончательное местоположение; это решение для пользователя.

Другие вопросы по тегам