介绍
如果您在Xcode中使用SFML,这是您应该阅读的第一篇教程,更一般地说,如果您正在为macOS开发应用程序。它将向您展示如何安装SFML、设置IDE和编译基本的SFML程序。更重要的是,它还将向您展示如何让您的应用程序为最终用户“开箱即用”。
您将在此文档中看到几个外部链接。它们是为那些好奇的人提供关于特定主题的进一步阅读;阅读它们并不是遵循本教程的必要条件。
系统要求
创建SFML应用程序只需:
- 带有Lion或更高版本(10.7+)的64位Intel Mac
- Xcode(支持App Store上提供的IDE版本4或更高版本)。
- Clang和libc++(默认情况下随Xcode一起提供)。
对于最新版本的Xcode,您还需要从Xcode>首选项>下载>组件
安装 Command Line Tools
。如果在那里找不到CTL,请在终端中使用xcode-select --install
命令并按照屏幕上的说明操作。
二进制文件:dylib与framework
SFML在macOS上有两种格式。一方面是dylib库,另一方面是framework包。
这两种类型的库只有一个细微的差别,你在开发SFML应用程序时需要注意:如果你自己构建SFML,你可以得到发布版和调试版配置的dylib,但是framework只能在发布配置中使用。无论哪种情况,这都不应该是问题,因为发布应用程序时应该使用SFML的发布版本。这就是为什么下载页面上的OS X二进制文件只在发布配置中可用的原因。
Xcode模板
SFML为Xcode 4+提供了两个模板,允许您快速轻松地创建新的应用程序项目:您可以选择应用程序需要的模块,无论您是想将SFML用作dylib还是framework,以及是创建一个包含其所有资源的应用程序包(使应用程序的安装过程像简单的拖放一样简单)还是一个经典的二进制文件。有关详细信息,请参见下文。
请注意,这些模板与Xcode 3不兼容。如果您仍在使用此版本的IDE,并且没有考虑更新它,那么您仍然可以创建SFML应用程序。这方面的指导超出了本教程的范围。请参阅苹果关于Xcode 3的文档,以及如何将库添加到您的项目中。
安装SFML
首先,您需要下载下载页面上提供的SFML SDK。然后,为了开始开发SFML应用程序,您必须安装以下项目:
头文件和库
SFML可作为dylibs或frameworks提供。只需要一种类型的二进制文件,但两者可以同时安装在同一系统上。我们建议使用frameworks。
- frameworks
将Frameworks的内容复制到/Library/Frameworks。 - dylib
将lib的内容复制到/usr/local/lib,并将include的内容复制至/usr/local/include。
SFML依赖项
SFML依赖于macOS上的一些外部库。将extlib的内容复制到/Library/Frameworks。
Xcode模板
此功能是可选的,但我们强烈建议您安装它。将SFML目录从templates复制到~/Library/Developer/Xcode/templates(如果文件夹还不存在,请创建文件夹)。
创建您的第一个SFML程序
我们为Xcode提供了两个模板。SFML CLT为经典终端程序生成项目,而SFML App为应用程序包创建项目。我们将在这里使用后者,但它们的工作原理相似。
首先选择文件>新建项目…
然后在左列中选择SFML并双击SFML应用程序。
现在,您可以填写所需的字段,如下面的屏幕截图所示。完成后,单击“下一步”。
您的新项目现在设置为创建应用程序包".app"。
既然你的项目已经准备好了,让我们看看里面有什么:
正如您所看到的,项目中已经有一些文件。有三种重要类型:
- 头文件和源文件:该项目在main.cpp中提供了一个基本示例和帮助函数std::string resourcePath(void);在
ResourcePath.hpp
和ResourcePath.mm
中。如所提供的示例所示,此函数的目的是提供一种访问应用程序包的Resources文件夹的方便方式。
请注意,此函数仅在macOS上有效。如果您计划使您的应用程序在其他操作系统上工作,您应该在相应的操作系统上实现自己的版本。 - 资源文件:基本示例的资源放在这个文件夹中,并在编译时自动复制到应用程序包中。
要将新资源添加到项目中,只需将它们拖放到此文件夹中,并确保它们是应用程序目标的成员;即,在实用程序区域(cmd+alt+1)中的“目标成员资格”下方应该被选中。 - 产品:您的应用程序。只需按下Run(运行)按钮即可进行测试。
项目中的其他文件与我们这里的关系不大。请注意,项目的SFML依赖项是以添加资源的类似方式添加到应用程序包中的。这样做是为了让您的应用程序在另一台Mac上开箱即用,而无需事先安装任何SFML或其依赖项。