2016-01-05 2 views
2


Я пытаюсь создать приложение CGI на C++, которое использует систему сборки autotools. Это приложение будет интерфейсом для моего встроенного устройства.
В результате make/make all У меня есть каталог bin с исполняемыми файлами * .cgi, предварительно подготовленными файлами html-templates и images и файлом конфигурации lighttpd.настроить «make install» с automake/autotools

Мне нужно, чтобы переместить мое содержание в соответствующие каталоги целевого устройства, то есть:

  • все .cgi от бен двигаться до $ (wwwdir)/CGI-BIN, где, если не указано, чем wwwdir бы/вар/WWW/
  • images каталог рекурсивно к тому же $ (wwwdir) каталог
  • все HTML шаблонов до $ (datarootdir)/$ (PACKAGE_NAME)
  • lighttpd.conf до $ (sysconfdir)

Список моих программ определяется следующим образом:
bin_PROGRAMS=$(top_builddir)/bin/main.cgi (здесь только один main.cgi)

Есть элегантный способ указать этапы установки с помощью файла configure.ac/Makefile.am так, что как только пользователь (или какая-то другая система сборки) работает make install все файлы получат там, где они должны были?

В настоящее время в результате make install - двоичный файл main.cgi земли в /usr/local/bin/.

ответ

1

В настоящее время в результате make install-двоичный файл main.cgi помещается в/usr/local/bin /.

Да, это ожидается. Вы можете установить это при запуске configure, например.

./configure --prefix=/var/www ... 

должны установить ваш bin_PROGRAMS в /var/www/bin.

В вашем случае, вы будете нуждаться, чтобы установить больше:

./configure --prefix=/var/www --bindir=/var/www/cgi-bin --sysconfdir=/wherever 

datarootdir следует установить в /var/www/share

Добавление шаблонов HTML для pkgdata_DATA должны поместить их в /var/www/shareПАКЕТ. Вам, вероятно, нужно будет добавить install hook для ваших файлов изображений, так как они, вероятно, принадлежат к pkgdata_DATA тоже в реальности, но это не так.

Добавить lighttpd.conf в sysconf_DATA. Я думаю, что это касается всех ваших файлов.

+0

Как насчет 'PACKAGE_NAME' в вопросе? В моем 'Makefile.am' я использовал' @datadir @/@ package_name @ ', и он был заменен на' $ {datarootdir}/@ package_name @ ', что, очевидно, неверно. – jww

Смежные вопросы