Я довольно новый программист на С++. Я сделал очень простую игру, используя библиотеки SDL. Моя игра, естественно, использует некоторые изображения, звуки и шрифты. Я хотел сделать дистрибутив пакета, где пользователь может настроить && make . Не то чтобы эта простая игра стоила распространения, но я хочу узнать, как работают autoconf и automake. Я искал примеры в Интернете, но учебники, которые я смог найти, показывают только установку простой программы helloworld. Они не говорят ни об установке файлов данных, ни о том, как проверить, существуют ли определенные библиотеки, чтобы я мог ссылаться на них во время компиляции. Кроме того, моя программа должна знать, где устанавливается каждый файл, чтобы она могла их загрузить. Я углубился в руководства по automake и autoconf, но они больше похожи на справочные материалы, чем на ресурс для новичков. Может ли кто-нибудь кратко объяснить эти концепции или привести меня в какое-то место, где я мог бы прочитать о них.
Как упаковать файлы данных с помощью autoconf и automake GNU
comment
Я обнаружил, что лучший способ использовать autoconf/automake — это найти проект, похожий на ваш, посмотреть, что они делают, и работать с документацией.
- person James McLaughlin   schedule 11.02.2012
comment
Ознакомьтесь с книгой о козлах, чтобы получить более удобочитаемое введение в автоинструменты. У них есть несколько примеров проектов разной сложности, которые показывают, как делать самые распространенные вещи с помощью автоинструментов.
- person ldav1s   schedule 11.02.2012
comment
Выглядит многообещающе. Я смотрю на это.
- person yasar   schedule 11.02.2012
comment
Вы можете посмотреть книгу Джона Калькота Autotools: Практическое руководство по GNU Autoconf, Automake и Libtool.
- person William Pursell   schedule 12.02.2012
Ответы (1)
Я провел некоторое исследование по этому поводу и хотел поделиться тем, что сработало для меня. Я создал такую структуру каталогов:
/
|->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");
Так что ваша программа будет скомпилирована, зная, где в файловой системе должен находиться фоновый файл.
person
yasar
schedule
11.02.2012
Следует ли вам использовать dist_pkgdata_DATA, если вы хотите его распространять?
- person Kemin Zhou; 23.06.2017