Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° SFML (Simple and Fast Multimedia Library) β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для создания кроссплатформСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, Π·Π²ΡƒΠΊΠΎΠΌ ΠΈ сСтСвыми функциями Π½Π° C++. Она идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 2D-ΠΈΠ³Ρ€, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π΄Π°ΠΆΠ΅ простых GUI-интСрфСйсов. Однако процСсс Π΅Ρ‘ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ часто Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ затруднСния Ρƒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²: ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ вСрсии Π΄ΠΎ настройки компилятора.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹Π΅ инструкции для Windows (Visual Studio, MinGW) ΠΈ Linux (GCC/Clang), Π²ΠΊΠ»ΡŽΡ‡Π°Ρ установку зависимостСй, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сборку ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Если Π²Ρ‹ Ρ€Π°Π½Π΅Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ΅ ΠΈΠ»ΠΈ компиляции β€” здСсь Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

1. Π’Ρ‹Π±ΠΎΡ€ вСрсии SFML ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° систСмы

ΠŸΠ΅Ρ€Π΅Π΄ установкой ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅, какая вСрсия SFML Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π°. ПослСдняя ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ 2026 Π³ΠΎΠ΄Π°) β€” SFML 2.6.x, Π½ΠΎ для ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ 2.5.1 ΠΈΠ·-Π·Π° Π»ΡƒΡ‡ΡˆΠ΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π’Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ вашСй систСмы (x86 ΠΈΠ»ΠΈ x64) ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с компилятором.

Для Windows доступны ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скомпилированныС Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ, Π° для Linux рСкомСндуСтся сборка ΠΈΠ· исходников (хотя Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ дистрибутивов SFML Π΅ΡΡ‚ΡŒ Π² рСпозиториях). ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ трСбования:

  • πŸ–₯️ Windows: Visual Studio 2019/2022 ΠΈΠ»ΠΈ MinGW-w64 (вСрсия 8.1+). Для VS трСбуСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Desktop development with C++.
  • 🐧 Linux: GCC 7.0+ ΠΈΠ»ΠΈ Clang 5.0+, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libx11-dev, libudev-dev, libfreetype6-dev.
  • πŸ”§ macOS: Xcode с инструмСнтами ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (для Homebrew).

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² Visual Studio, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° сборки (x64 ΠΈΠ»ΠΈ Win32). Для MinGW ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ совпадСниС разрядности компилятора ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ SFML β€” ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ошибки Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΠΉΡ‚Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ SFML, собранныС Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ компиляторами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, MSVC ΠΈ MinGW). Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкам Π²ΠΈΠ΄Π° undefined reference ΠΈΠ»ΠΈ ΠΊΡ€Π°Ρ…Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈ запускС.

2. Установка SFML Π½Π° Windows

На Windows ΠΏΡ€ΠΎΡ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта. Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ Π°Ρ€Ρ…ΠΈΠ² для вашСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (32-bit ΠΈΠ»ΠΈ 64-bit) ΠΈ компилятора (Visual C++ ΠΈΠ»ΠΈ MinGW). РаспакуйтС Π΅Π³ΠΎ Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ мСсто, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, C:\SFML\.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π°Ρ€Ρ…ΠΈΠ²Π°:

ΠŸΠ°ΠΏΠΊΠ°Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
bin.dll-файлыДинамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½ΡƒΠΆΠ½Ρ‹ для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
includeΠ—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (.hpp)ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ΄Π΅ Ρ‡Π΅Ρ€Π΅Π· #include
lib.lib-Ρ„Π°ΠΉΠ»Ρ‹ (для VS) ΠΈΠ»ΠΈ .a (для MinGW)БтатичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ
cmakeΠ€Π°ΠΉΠ»Ρ‹ для CMakeНуТны ΠΏΡ€ΠΈ сборкС Ρ‡Π΅Ρ€Π΅Π· CMake

Для Visual Studio Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Console Application.
  2. Π’ свойствах ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Alt+F7) ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² VC++ Directories ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΠΈ:
    • πŸ“ Include Directories: C:\SFML\include
    • πŸ“ Library Directories: C:\SFML\lib
  • Π’ Linker β†’ Input β†’ Additional Dependencies Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для sfml-graphics): sfml-graphics.lib;sfml-window.lib;sfml-system.lib.
  • Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ .dll-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· SFML/bin Π² ΠΏΠ°ΠΏΠΊΡƒ с исполнимым Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Debug/ ΠΈΠ»ΠΈ Release/).
  • Π‘ΠΊΠ°Ρ‡Π°Π½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ² (MSVC x64/x86)|ΠŸΡƒΡ‚ΠΈ ΠΊ include/lib Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² настройки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°|Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² Linker β†’ Input|DLL-Ρ„Π°ΠΉΠ»Ρ‹ скопированы Π² ΠΏΠ°ΠΏΠΊΡƒ с .exe|ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ собираСтся Π±Π΅Π· ошибок-->

    Для MinGW процСсс Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ .a-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ lib ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ компилятора совпадаСт с Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ SFML. НапримСр, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ MinGW-w64 для x64, скачивайтС SFML-2.6.x-windows-gcc-64-bit.

    3. Установка SFML Π½Π° Linux

    На Linux ΠΏΡ€ΠΎΡ‰Π΅ всСго ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ SFML Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Для Debian/Ubuntu Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

    sudo apt update
    

    sudo apt install libsfml-dev

    Для Fedora/RHEL:

    sudo dnf install SFML-devel

    Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° послСдняя вСрсия ΠΈΠ»ΠΈ спСцифичСская сборка, скачайтС исходники с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта ΠΈ собСритС Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ:

    tar xzf SFML-2.6.0-sources.tar.gz
    

    cd SFML-2.6.0/

    cmake -DCMAKE_BUILD_TYPE=Release .

    make

    sudo make install

    ПослС установки ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² /usr/local/include/SFML ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² /usr/local/lib. Если Π²Ρ‹ использовали apt, ΠΏΡƒΡ‚ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ стандартными (/usr/include/SFML ΠΈ /usr/lib/x86_64-linux-gnu).

    ⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΉ сборкС Ρ‡Π΅Ρ€Π΅Π· CMake ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ установлСны всС зависимости (libx11-dev, libgl1-mesa-dev ΠΈ Π΄Ρ€.). Π˜Ρ… отсутствиС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкам ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

    Для использования SFML Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ достаточно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΡΠ»ΠΈΠ½ΠΊΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ компиляции для g++:

    g++ main.cpp -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system

    Visual Studio (MSVC)|MinGW|GCC (Linux)|Clang|Π”Ρ€ΡƒΠ³ΠΎΠΉ-->

    4. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° SFML: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° установки

    Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ SFML ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, создайтС простой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ. Π’ΠΎΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

    #include <SFML/Graphics.hpp>
    
    

    int main() {

    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Works!");

    while (window.isOpen()) {

    sf::Event event;

    while (window.pollEvent(event)) {

    if (event.type == sf::Event::Closed)

    window.close();

    }

    window.clear();

    window.display();

    }

    return 0;

    }

    Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Если всё настроСно Π²Π΅Ρ€Π½ΠΎ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ пустоС ΠΎΠΊΠ½ΠΎ с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ SFML Works!. Если ΠΎΠΊΠ½ΠΎ Π½Π΅ открываСтся ΠΈΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ошибки, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅:

    • πŸ” ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ Π² настройках ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
    • πŸ” НаличиС всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… .dll-Ρ„Π°ΠΉΠ»ΠΎΠ² (для Windows) Π² ΠΏΠ°ΠΏΠΊΠ΅ с исполнимым Ρ„Π°ΠΉΠ»ΠΎΠΌ.
    • πŸ” ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ„Π»Π°Π³ΠΎΠ² Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, порядок Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π²Π°ΠΆΠ΅Π½: -lsfml-graphics Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ΄Ρ‚ΠΈ послС -lsfml-window).

    Если ΠΎΠΊΠ½ΠΎ открываСтся, Π½ΠΎ сразу закрываСтся, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ событий (ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅). На Windows Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ антивирус Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ .dll-Ρ„Π°ΠΉΠ»Ρ‹ SFML.

    πŸ’‘

    Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ошибок Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ Π² Visual Studio Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ Π»ΠΎΠ³Π°: Π² свойствах ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Linker β†’ General β†’ Show Progress ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Yes (/VERBOSE).

    5. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ SFML с CMake

    Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ CMake для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² CMakeLists.txt ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

    cmake_minimum_required(VERSION 3.10)
    

    project(SFMLProject)

    set(CMAKE_CXX_STANDARD 17)

    find_package(SFML 2.6 COMPONENTS graphics window system REQUIRED)

    add_executable(sfml-app main.cpp)

    target_link_libraries(sfml-app PRIVATE SFML::Graphics SFML::Window SFML::System)

    Для Windows ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ SFML, Ссли ΠΎΠ½Π° установлСна Π½Π΅ Π² стандартном мСстС:

    set(SFML_DIR "C:/SFML/lib/cmake/SFML")

    Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ собСритС Π΅Π³ΠΎ. CMake автоматичСски подтянСт Π½ΡƒΠΆΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Если find_package Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ SFML, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅:

    • πŸ“Œ ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния SFML_ROOT (Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΠ°ΠΏΠΊΡƒ с SFML).
    • πŸ“Œ НаличиС Ρ„Π°ΠΉΠ»Π° SFMLConfig.cmake Π² ΠΏΠ°ΠΏΠΊΠ΅ lib/cmake/SFML.

    Для Linux/CMake ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ стандартных ΠΏΡƒΡ‚Π΅ΠΉ, Π½ΠΎ Ссли Π²Ρ‹ собрали SFML Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅:

    set(SFML_DIR "/usr/local/lib/cmake/SFML")
    Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли CMake Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ SFML?

    1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΏΠΊΠ° с SFML содСрТит ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΡƒ cmake с Ρ„Π°ΠΉΠ»ΠΎΠΌ SFMLConfig.cmake.

    2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ пСрСмСнная SFML_DIR Π² CMake ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° эту ΠΏΠ°ΠΏΠΊΡƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, set(SFML_DIR "C:/SFML/lib/cmake/SFML")).

    3. Для Linux ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ SFML Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΈΠ»ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ SFMLConfig.cmake Π² /usr/local/lib/cmake/SFML/.

    4. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π½Π΅ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ GCC, собСритС SFML ΠΈΠ· исходников с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ Ρ„Π»Π°Π³Π°ΠΌΠΈ компилятора.

    6. РаспространённыС ошибки ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

    ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с SFML часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ΠΎΡ‚ самыС распространённыС ΠΈ способы ΠΈΡ… исправлСния:

    ΠžΡˆΠΈΠ±ΠΊΠ°ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°Π Π΅ΡˆΠ΅Π½ΠΈΠ΅
    undefined reference to `sf::String::String(...)' НС слинкована Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° sfml-system ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ порядок Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ -lsfml-system Π² ΠΊΠΎΠ½Π΅Ρ† списка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π’ Visual Studio ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ порядок Π² Additional Dependencies.
    fatal error: SFML/Graphics.hpp: No such file or directory ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ include Π² настройках ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ Ρ„Π»Π°Π³ -I Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.
    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° запускаСтся, Π½ΠΎ ΠΎΠΊΠ½ΠΎ Π½Π΅ открываСтся (Windows) ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ .dll-Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΠ΅ с .exe. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ всС .dll ΠΈΠ· SFML/bin Π² ΠΏΠ°ΠΏΠΊΡƒ сборки (Debug/ ΠΈΠ»ΠΈ Release/).
    Failed to create OpenGL context ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠ»ΠΈ OpenGL. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹. На Linux установитС mesa-utils ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ OpenGL ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ glxinfo.

    Если Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²ΠΈΠ΄Π° LNK1104: cannot open file 'sfml-graphics.lib', ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ:

    • πŸ”Ή Π’Ρ‹ скачали Π²Π΅Ρ€ΡΠΈΡŽ SFML для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (x86 ΠΈΠ»ΠΈ x64).
    • πŸ”Ή Π’ настройках ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹Π±Ρ€Π°Π½Π° Ρ‚Π° ΠΆΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, x64 для SFML-64-bit).
    • πŸ”Ή ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ lib ΡƒΠΊΠ°Π·Π°Π½ Π² Library Directories.

    На Linux ошибки Π²ΠΈΠ΄Π° symbol lookup error часто связаны с нСсовпадСниСм вСрсий Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (libsfml-*) установлСны ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ рСпозитория ΠΈΠ»ΠΈ собраны с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ„Π»Π°Π³Π°ΠΌΠΈ.

    πŸ’‘

    Бамая частая ошибка ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ SFML β€” нСсовпадСниС разрядности Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ВсСгда провСряйтС, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈ SFML собраны для ΠΎΠ΄Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (x86 ΠΈΠ»ΠΈ x64).

    7. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ настройки

    ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ SFML ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚:

    • πŸš€ ΠžΡ‚Π»Π°Π΄ΠΊΠ°: Π’ Visual Studio ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Debug-вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (sfml-graphics-d.lib) для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ сборки.
    • πŸ“¦ БтатичСская Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ°: Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ€Π°ΡΠΏΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ .dll-Ρ„Π°ΠΉΠ»Ρ‹, слинкуйтС SFML статичСски. Для этого скачайтС статичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (SFML-static) ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„Π»Π°Π³ SFML_STATIC Π² прСпроцСссор.
    • πŸ”„ ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ: SFML потокобСзопасна, Π½ΠΎ рСсурсы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, sf::RenderWindow) нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

    Для статичСской Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ Π² Visual Studio:

    1. Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ SFML с суффиксом -static.
    2. Π’ свойствах ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Preprocessor Definitions Ρ„Π»Π°Π³ SFML_STATIC.
    3. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² порядкС зависимостСй (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, sfml-window-s.lib;sfml-system-s.lib).

    На Linux для статичСской сборки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

    g++ main.cpp -o sfml-app -static -lsfml-graphics-s -lsfml-window-s -lsfml-system-s

    ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ статичСская Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ исполнимого Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ распространСниС.

    8. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ способы установки

    Помимо Ρ€ΡƒΡ‡Π½ΠΎΠΉ установки, SFML ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для C++:

    • πŸ“¦ vcpkg (Windows/Linux/macOS):
    vcpkg install sfml
    • πŸ“¦ Conan (кроссплатформСнный):
    conan install sfml/2.6.0@

    Π­Ρ‚ΠΈ инструмСнты автоматичСски Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ зависимости ΠΈ настроят ΠΏΡƒΡ‚ΠΈ. НапримСр, для vcpkg послС установки достаточно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ с CMake:

    cmake -DCMAKE_TOOLCHAIN_FILE=[vcpkg-root]/scripts/buildsystems/vcpkg.cmake ..

    Для Conan ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ conanfile.txt:

    [requires]
    

    sfml/2.6.0

    [generators]

    cmake

    Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π³Π΄Π΅ Π²Π°ΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями.

    πŸ’‘

    ИспользованиС vcpkg ΠΈΠ»ΠΈ Conan ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ SFML ΠΈ Π΅Ρ‘ зависимостСй, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ настройки окруТСния.

    Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

    МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SFML Π² коммСрчСских ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…?

    Π”Π°, SFML распостраняСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ zlib/png, которая позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² коммСрчСских ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. ЕдинствСнноС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ β€” ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ авторства (Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ см. Π² Ρ„Π°ΠΉΠ»Π΅ license.md Π² Π°Ρ€Ρ…ΠΈΠ²Π΅ SFML.

    Как ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ SFML Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ вСрсии?

    1. Π£Π΄Π°Π»ΠΈΡ‚Π΅ старыС Ρ„Π°ΠΉΠ»Ρ‹ SFML (ΠΏΠ°ΠΏΠΊΠΈ include, lib, bin).

    2. Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта.

    3. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΠΈ Π² настройках ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Ссли измСнилась структура ΠΏΠ°ΠΏΠΎΠΊ).

    4. ΠŸΠ΅Ρ€Π΅ΡΠΎΠ±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ vcpkg/Conan, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ vcpkg update ΠΈΠ»ΠΈ conan update.

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ SFML Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Π½Π° ΠΌΠΎΡ‘ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅?

    ЧастыС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

    • πŸ–₯️ ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ускорСниС OpenGL: ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹.
    • πŸ”„ Блишком частыС Π²Ρ‹Π·ΠΎΠ²Ρ‹ window.display(): ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒΡ‚Π΅ FPS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ window.setFramerateLimit(60).
    • πŸ—‘οΈ Π£Ρ‚Π΅Ρ‡ΠΊΠΈ памяти: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ освобоТдСниС рСсурсов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, тСкстур).

    Для диагностики ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Valgrind Π½Π° Linux).

    Как ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ SFML ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Π½Π° Qt?

    1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΠΈ ΠΊ SFML Π² .pro-Ρ„Π°ΠΉΠ»:

    INCLUDEPATH += /usr/include/SFML
    

    LIBS += -lsfml-graphics -lsfml-window -lsfml-system

    2. Π’ main.cpp ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ SFML Π΄ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Qt, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² макросов:

    #include <SFML/Graphics.hpp>
    

    #include <QApplication>

    3. Π‘ΠΎΠ±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Если Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ошибки Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ порядок Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² LIBS.

    Π“Π΄Π΅ Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°?

    ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ докумСнтация: SFML 2.6 API.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²: