介绍
如果您在Linux上使用SFML,那么本教程是您应该阅读的第一本教程。它将解释如何安装SFML,以及编译使用它的项目。
安装SFML
在Linux上安装SFML有不同的方法:
- 直接从发行版的软件包存储库安装
- 获取源代码,构建并安装
- 下载预编译的SDK并手动复制文件
方案1是首选方案;如果要安装的SFML版本在官方存储库中可用,请使用软件包管理器进行安装。例如,在Debian上,您可以:
sudo apt-get install libsfml-dev
方案2需要更多的工作:您需要确保SFML的所有依赖项(包括它们的开发头)都可用,确保安装了CMake,并手动执行一些命令。这将产生一个适合您的系统的软件包。
如果你想走这条路,有一个关于自己构建SFML的专门教程。
最后,如果SFML不是官方软件包,那么方案3是快速安装的好选择。从下载页面下载SDK,解压缩并将文件复制到您的首选位置:个人文件夹中的单独路径(如/home/me/sfml)或标准路径(如/usr/local)。
如果您已经安装了旧版本的SFML,请确保它不会与新版本冲突!
编译SFML程序
在本教程中,我们将不讨论诸如Code::Blocks或Eclipse之类的IDE。我们将重点介绍编译和链接SFML可执行文件所需的命令。编写一个完整的makefile或在IDE中配置一个项目超出了本教程的范围——这里有更好的专门教程。
如果您使用的是Code::Blocks,您可以参考Windows的Code::Blocks教程;很多地方应该是相似的。如果将SFML安装到系统的标准路径之一,则不必设置编译器和链接器搜索路径。
首先,创建一个源文件。对于本教程,我们将其命名为“main.cpp”。将以下代码放入main.cpp文件中:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
现在让我们编译它:
g++ -c main.cpp
如果将SFML安装到非标准路径,则需要告诉编译器在哪里可以找到SFML头文件(.hpp文件):
g++ -c main.cpp -I<sfml-install-path>/include
这里,< sfml-install-path >是您复制sfml的目录,例如/home/me/sfml。
然后必须将编译后的文件链接到SFML库,才能获得最终的可执行文件。SFML由5个模块(系统、窗口、图形、网络和音频)组成,每个模块都有一个库。
要链接SFML库,必须在命令行中添加“-lsfml xxx”,例如图形模块的“-lsfml-graphics”(必须省略库文件名的“lib”前缀和“.so”扩展名)。
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
如果将SFML安装到非标准路径,则需要告诉链接器在哪里可以找到SFML库(.so文件):
g++ main.o -o sfml-app -L<sfml-install-path>/lib -lsfml-graphics -lsfml-window -lsfml-system
我们现在可以执行编译后的程序了:
./sfml-app
如果SFML没有安装在标准路径中,则需要通过指定LD_LIBRARY_path来告诉动态链接器首先在哪里查找SFML库:
export LD_LIBRARY_PATH=<sfml-install-path>/lib && ./sfml-app
如果一切正常,您应该在新窗口中看到: