Я довольно новый программист на C++. Я сделал очень простую игру, используя библиотеки SDL. Естественно, моя игра использует некоторые изображения, звуки и шрифты. Я хотел сделать дистрибутив пакета, где пользователь может настроить & & make. Это не похоже на то, что эта простая игра стоит распространять, но я хочу узнать, как работает autoconf и automake. Я искал примеры в Интернете, но учебники, которые я мог найти, показывают только установку простой программы helloworld. Они не говорят ни об установке файлов данных, ни о том, как проверить, существуют ли определенные библиотеки, чтобы я мог ссылаться на них во время компиляции. Кроме того, моя программа должна знать, где каждый файл будет установлен, чтобы он мог их загрузить. Я вникал в автоматы и руководства autoconf, но они больше похожи на справочные материалы, чем на ресурсы для новых пользователей. Может кто-нибудь кратко объяснить эти понятия или привести меня в какое-то место, где я мог бы прочитать о них.Как упаковать файлы данных с помощью autoconf GNU и automake
ответ
Я сделал некоторые исследования по этому вопросу, и я хотел поделиться тем, что сработало для меня. Я создал структуру каталогов, как это:
/
|->src/
| |-> Makefile.am
| |-> main.cpp
| |-> functions.cpp
|
|-> data/
| |-> Makefile.am
| |-> somethings.png
| |-> something.mp3
|-> configure.ac
|-> README
|-> NEWS, AUTHORS etc. etc.
Я поставил все свои изображения, шрифты, звуки и т.д. в папке данных. Makefile.am в папке с данными выглядит так:
pkgdata_DATA = esound.wav \
another.wav \
apicture.png
Он просто перечисляет все файлы, которые должны быть в каталоге данных. Makefile.am в папке Src выглядеть следующим образом:
bin_PROGRAMS = mygame
mygame_SOURCES = main.cpp functions.cpp
AM_CPPFLAGS = -DDATADIR=\"$(pkgdatadir)\"
Важной частью здесь является AM_CPPFLAGS, который определяет DATADIR макрос, в соответствии с параметрами, передаваемых в конфигурационный скрипт. Итак, мы можем использовать этот макрос в наших исходных файлах, как это:
background = load_image(DATADIR "/background.png");
Так что ваша программа будет компилируются знать, где фон файл должен находиться в файловой системе.
Должен ли использоваться dist_pkgdata_DATA, если вы хотите его распространять? –
Я нашел, что лучший способ пойти с autoconf/automake - найти проект, похожий на ваш собственный, посмотреть, что он делает, и работать там с документацией. –
Возможно, вам стоит взглянуть на книгу Джона Калькота «Autotools: Руководство для переводчика по GNU Autoconf, Automake и Libtool» –
Попробуйте [Козловую книгу] (http://sourceware.org/autobook/) для более читаемого введения в Autotools. У них есть несколько проектов различной сложности, которые показывают, как делать самые распространенные вещи с помощью autotools. – ldav1s