SFML Desktop: Setup with find_package (MinGW 13.1) SFML для Desktop: Настройка через find_package (MinGW 13.1)

A guide to configuring SFML with CMake and MinGW on Windows. Руководство по настройке SFML с использованием CMake и MinGW на Windows.

Prerequisite: Ensure you have followed my Environment Setup Guide (MinGW 13.1 & CMake) Предварительное условие: Убедитесь, что вы выполнили инструкции из руководства по настройке среды (MinGW 13.1 и CMake)

1. Obtain SFML 2.6.2 1. Получение SFML 2.6.2

2. Add SFML to System PATH 2. Добавление SFML в системный PATH

To ensure your applications can find the SFML .dll files at runtime, you should add the library's bin folder to your Environment Variables: Чтобы приложения могли находить .dll файлы SFML при запуске, необходимо добавить папку bin библиотеки в переменные среды:

C:\libs\SFML-2.6.2-mingw\bin

3. Project Configuration (CMakeLists.txt) 3. Конфигурация проекта (CMakeLists.txt)

cmake_minimum_required(VERSION 3.21)
project(rectangle-sfml2-cpp)

set(SFML_DIR "C:/libs/SFML-2.6.2-mingw/lib/cmake/SFML")

find_package(SFML 2.6 COMPONENTS system window graphics REQUIRED)

# Define the executable
add_executable(app)

target_sources(app
PRIVATE
    src/main.cpp
)

target_link_libraries(app sfml-system sfml-window sfml-graphics)

# This code copies the SFML DLLs to the build directory
add_custom_command(TARGET app POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    $<TARGET_RUNTIME_DLLS:app> $<TARGET_FILE_DIR:app>
    COMMAND_EXPAND_LISTS
)

# Copy Assets (ONLY if the folder exists!)
if(EXISTS "${CMAKE_SOURCE_DIR}/assets")
    add_custom_command(TARGET app POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy_directory
        "${CMAKE_SOURCE_DIR}/assets" "$<TARGET_FILE_DIR:app>/assets"
    )
endif()

target_link_options(app PRIVATE -mconsole)

4. Source Code (src/main.cpp) 4. Исходный код (src/main.cpp)

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(400, 300), "SFML2 Rotated Rectangle");

    sf::RectangleShape rectangle(sf::Vector2f(150.f, 50.f));
    rectangle.setFillColor(sf::Color::Green);

    // Set the origin to the center of the rectangle
    rectangle.setOrigin(75.f, 25.f);

    rectangle.setPosition(200.f, 150.f);
    rectangle.setRotation(20.f);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(rectangle);
        window.display();
    }

    return 0;
}

5. Opening the Project in IDEs 5. Открытие проекта в IDE

CLion
Qt Creator
Sublime Text 4 + CMD

6. Automation Scripts 6. Скрипты автоматизации

Create these .bat files in your project root to speed up development: Создайте эти .bat файлы в корне проекта для ускорения разработки:

config-exe.bat
cmake -G "MinGW Makefiles" -S . -B dist/win ^
-DCMAKE_BUILD_TYPE=Debug
build-exe.bat
cd dist\win
cmake --build .
cd ..\..
run-exe.bat
dist\win\app

7. How to Build and Run 7. Как собрать и запустить

8. GitHub Template 8. Шаблон на GitHub

You can find the complete source code and project structure for this guide here: setting-up-sfml-with-find-package Вы можете найти полный исходный код и структуру проекта для этого руководства здесь: setting-up-sfml-with-find-package


Support My Work Поддержать проект

If these tutorials helped you, consider buying me a coffee! Если эти туториалы вам помогли, вы можете поддержать автора.

Sberbank (Russia only) Сбербанк (только для РФ)

Sberbank SBP QR Code

Direct transfer via phone number (Russia only) Перевод по номеру телефона (только для РФ)

+7 (917) 212-29-59

USDT TRC20

USDT TRC20 QR Code

Support via Cryptocurrency Поддержка криптовалютой

TMtY1YifNf6FKvgeFmqKGQR4NStKr3csGp