7

我是一个相当新的 C++ 程序员。我使用 SDL 库制作了一个非常简单的游戏。我的游戏自然会使用一些图像、声音和字体。我想分发包,用户可以在其中配置 && make 。这个简单的游戏不值得分发,但我想了解 autoconf 和 automake 是如何工作的。我在互联网上搜索了示例,但我能找到的教程只显示了一个简单的 helloworld 程序的安装。他们既不谈论数据文件的安装,也不谈论如何检查某些库是否存在,以便我可以在编译时链接它们。而且,我的程序应该知道每个文件的安装位置,以便可以加载它们。我已经深入研究了 automake 和 autoconf 手册,但它们更像是参考资料,而不是新手的资源。

4

1 回答 1

15

我对此进行了一些研究,我想分享对我有用的东西。我创建了一个这样的目录结构:

/
|->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

它只是列出了需要在数据目录中结束的所有文件。src 文件夹中的 Makefile.am 如下所示:

bin_PROGRAMS = mygame
mygame_SOURCES = main.cpp functions.cpp
AM_CPPFLAGS = -DDATADIR=\"$(pkgdatadir)\"

这里重要的部分是 AM_CPPFLAGS,它根据传递给配置脚本的选项定义 DATADIR 宏。那么我们可以在源文件中使用这个宏,如下所示:

background = load_image( DATADIR "/background.png");

这样您的程序将被编译,知道背景文件应该驻留在文件系统中的哪个位置。

于 2012-02-11T23:13:21.260 回答