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. Project Configuration (CMakeLists.txt) 2. Конфигурация проекта (CMakeLists.txt)

cmake_minimum_required(VERSION 3.21)
project(setting-up-sfml-with-find-package)

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)

3. Source Code (main.cpp) 3. Исходный код (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;
}

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

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

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


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

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

Sberbank

Sberbank SBP QR Code

Direct transfer via phone number Перевод по номеру телефона

+7 (917) 212-29-59

Bybit (USDT TRC20)

Bybit USDT TRC20 QR Code

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

TMtY1YifNf6FKvgeFmqKGQR4NStKr3csGp