Автоинструменты с файлами данных - PullRequest
4 голосов
/ 20 ноября 2010

Я хочу распространять свой исходный код и соответствующие файлы данных с помощью Autotools:

~/foo$ ls -R
.:
conf  configure.ac  dat  Makefile.am  src

./conf:
foo-pref.conf

./dat:
data.dat

./src:
main.c  Makefile.am

Это то, что я имею до сих пор. Без подкаталогов ./conf и ./dat я могу заставить Autotools работать, чтобы настроить его для одного исполняемого файла. Но я хочу, чтобы data.dat был установлен в $ (prefix) / share и foo-pref.conf в соответствующий каталог / etc. Что я могу сделать, чтобы достичь этого?

1 Ответ

7 голосов
/ 21 ноября 2010

Вы можете использовать dist_data_DATA = dat/data.dat и dist_sysconf_DATA = conf/foo-pref.conf для достижения того, что вы хотите. Префикс dist_ говорит, что эти файлы должны распространяться в дистрибутивах, сгенерированных с помощью make dist. Средняя часть (в данном случае) говорит, что является целевым каталогом: data для ${datadir}, sysconf для ${sysconfdir}, ... другие могут быть найдены в сгенерированном Makefile, если это необходимо. Ну, а первичный DATA говорит, что ничего не делает с этими файлами, в отличие от, скажем, SCRIPTS.

Обратите внимание, что по умолчанию конфигурация установит ${sysconfdir} на ${prefix}/etc, в отличие от более привычного /etc. Если вы хотите изменить это, вам нужно вызвать configure, например, с помощью ./configure --sysconfdir=/etc.

...