首先需要下载SFML的源代码。从https://www.sfml-dev.org/files/SFML-2.5.1-sources.zip下载LLVM的源代码,并解压。或者直接从github上面克隆。

1
git clone --config core.autocrlf=false https://github.com/SFML/SFML.git

选择合适的编译器,在windows系统下可以选择Visual C++,在linux上可以选择GNU编译器。这里以windows为例进行演示。为了使用Visual C++编译器,需要打开developer powershell for VS 2022作为终端,使用该终端的理由是该终端有相关的Visual C++环境变量。
进入源代码目录,进行cmake相关配置。

1
cmake -GNinja -Bbuild

然后进入新建的build目录,进行构建。

1
cmake --build .

构建成功之后,使用管理员方式重新打开developer powershell for VS 2022,进行安装。

1
ninja install

默认会安装在C:\Program Files (x86)\SFML目录下,将C:\Program Files (x86)\SFML\bin添加到环境变量。
最后测试是否安装成功。新建一个项目,添加一个C++源文件main.cpp。其内容如下所示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <SFML/Graphics.hpp>
#include <iostream>

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;
}

再新建一个CMakeLists.txt文件,用来构建。内容如下所示。

1
2
3
4
5
6
7
8
cmake_minimum_required(VERSION 3.4.0)
project(main LANGUAGES CXX)

find_package(SFML COMPONENTS audio network system window graphics REQUIRED CONFIG)


add_executable(main main.cpp)
target_link_libraries(main sfml-system sfml-window sfml-graphics sfml-audio sfml-network)

使用如下命令进行编译。

1
2
3
cmake -Bbuild -GNinja
cd build
cmake --build .

编译完成后,会在build目录下生成一个名为main.exe的可执行文件,运行之,可以看到一个小的窗口,窗口中有一个绿色的圆形,表示安装成功。