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