yas*_*sar 7 c++ automake autoconf data-files
我是一个相当新的C++程序员.我使用SDL库做了一个非常简单的游戏.我的游戏自然会使用一些图像,声音和字体.我想要分发包,用户可以配置&& make.这并不是说这个简单的游戏值得分发,但我想了解autoconf和automake的工作原理.我搜索了互联网上的例子,但我找到的教程只显示了一个简单的helloworld程序的安装.他们既没有谈论数据文件的安装,也没有讨论如何检查某些库是否存在,以便我可以在编译时链接它们.而且,我的程序应该知道每个文件的安装位置,以便它可以加载它们.我已经深入研究了automake和autoconf手册,但它们更像是参考资料,而不是新手的资源.任何人都可以简单地解释这个概念,或者引导我到一些我可以阅读它们的地方.
yas*_*sar 15
我对此做了一些研究,我想分享对我有用的东西.我创建了一个这样的目录结构:
/
|->src/
| |-> Makefile.am
| |-> main.cpp
| |-> functions.cpp
|
|-> data/
| |-> Makefile.am
| |-> somethings.png
| |-> something.mp3
|-> configure.ac
|-> README
|-> NEWS, AUTHORS etc. etc.
Run Code Online (Sandbox Code Playgroud)
我已将所有图像,字体,声音等放在数据文件夹中.数据文件夹上的Makefile.am如下所示:
pkgdata_DATA = esound.wav \
another.wav \
apicture.png
Run Code Online (Sandbox Code Playgroud)
它只列出了需要在数据目录中结束的所有文件.src文件夹中的Makefile.am如下所示:
bin_PROGRAMS = mygame
mygame_SOURCES = main.cpp functions.cpp
AM_CPPFLAGS = -DDATADIR=\"$(pkgdatadir)\"
Run Code Online (Sandbox Code Playgroud)
这里的重要部分是AM_CPPFLAGS,它根据传递给configure脚本的选项定义DATADIR宏.那么我们可以在源文件中使用这个宏,如下所示:
background = load_image( DATADIR "/background.png");
Run Code Online (Sandbox Code Playgroud)
这样您的程序就会知道后台文件应该驻留在文件系统中的哪个位置.
| 归档时间: |
|
| 查看次数: |
2128 次 |
| 最近记录: |