SDL2.0说明
截至到2012年6月17日我写这篇帖子为止,SDL2.0还没有发布官方正式版本,因此你需要用你手头上编辑器自行编译。
你可以在这里下载它。
你可以从Mecurial版本库里clone一份最新的源码,但下载一份快照也是个不错的选择。在实际写代码的时候,需要从他们的Mercurial版本库里clone我们要用的扩展库。
在下载完之后,就很容易设置了。注意扩展库SDL_image, SDL_ttf还有SDL_mixer是依赖于SDL的,你需要指定包含路径和链接设置来编译,其中SDL要先编译。
注意源码文件夹里已经包含了怎样在各个平台上编译构建的文档说明,它们应该能够帮你构建并确认一切是否正常,你也可以继续阅读。
SDL2.0发布官方正式版时,我会更新链接,这样你们就可以直接下载编译好的库,这就更容易了。
C++11说明
在这个教程中,我们会使用一些C++11新标准中的特性,因此你可以选择使用支持这些新标准的编译器,也可以把这些代码翻译成你所使用的编译器所支持的代码,这应该不是很难。Visual Studio 2012支持C++11,如果你用的是GCC,你可以通过增加-std=c++0x的编译选项来启用C++11特性。
Visual Studio
源码文件夹里应该包含了一个叫VisualC的文件夹,如果你打开里面的项目解决方案时被提示更新项目,照做就是。在构建之前,确定你选择生成的是Release版本。这样解决方案应该会顺利生成。主目录里有一个VisualC.html文件,里面包含的信息如果你在编译出问题的时候应该很有用。
译注:在windows下编译需要安装DirectX SDK,下载地址在此处
.
在生成扩展库的时候,确认你生成的是Release版本。注意在编译之前,你需要给扩展库指定SDL2.0的包含路径(include directory,头文件路径)和库路径(library directory)。
SDL_mixer的说明:
很不幸我没能在Visual Studio中生成SDL_mixer,尽管它能在Linux里正常使用。所以我觉得Visual Studio的工程文件有点问题。
译注:SDL_mixer已经可以在VC中编译成功,情况是这样的:
编译SDL_mixer需要将MP3_MUSIC取消定义,你可以在预处理器定义中把这一项删掉。目前源里的SDL_mixer似乎并不支持mp3格式音乐的回放,因为此前的MP3_MUSIC模块依赖于smpeg库,而smpeg库依赖于SDL1.2特有的接口,所以SDL_mixer的MP3播放模块无法与SDL2.0正确链接,只能把那个模块去掉再编译。
此外,对VC Express的用户来说,还有一个问题。SDL_mixer只包含了一个VS2008对应的sln文件,而想要在VS更高版本里用的话就必须转换,但如果你用的是vs的express版,它并不包含x64的工具集,这就导致解决方案转换失败。分别用文本编辑器打开这四个项目的.vcproj文件,将VisualStudioProject-Configurations节点下与x64相关的Configuration节点及其子节点全部删除,注意需要删除的有Release和Debug两块。除此之外,还有一个邪恶又简便的解决方案,在%ProgramFiles%\MSBuild\Microsoft.Cpp\v4.0\Platforms下,复制Win32文件夹并粘贴后重命名为x64,也可以通过“欺骗”VS来解决这个问题。谢谢Shuenhoy同学的提示。
当你全部生成完所有的库之后,你要把头文件,lib库文件还有dll放到你不会遗忘的地方,因为我们会在我们的项目中使用到这些文件。我的路径是C:\
这里有如何在VS里创建你第一个SDL项目的教程。
Linux
Linux用户只需要使用标准的configure,make,make install.注意要记下你的头文件和库文件的安装路径,因为你在之后编译项目的时候需要指定这些路径。另外你也可以把库和头文件移到标准路径下。你可以把运行库放到或者链接到/lib/路径下,或者放到其他存放运行库的备用路径下面。关于Linux里编译命令的教程在 这里。
Mac
源代码文件夹还包含了一个XCode的工程,但我没有Mac电脑所以很不幸我无法提供更多的指导。在源码中包含的文档里查找关于构建这些库以及如何包含头文件和库文件的信息吧。