Есть несколько способов подключить библиотеку в C++ мы рассмотрим два, подходящие для Visual Studio:

  • Через CMake создать проект Visual Studio
  • Используя CMake Project в Visual Studio

Прежде, чем начать установить на ваш ПК CMake. Пройдите на сайт CMake и выберете подходящую под вашу ОС версию. Проверить наличие программы можно командой:

cmake -version

Первый способ

Чтобы создать проект Visual Studio создаем в папке файл CMakeLists.txt со следующим содержимым:

cmake_minimum_required(VERSION 3.5...4.0)
project(CMakeSFMLProject LANGUAGES CXX)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
include(FetchContent)
FetchContent_Declare(SFML
    GIT_REPOSITORY https://github.com/SFML/SFML.git
    GIT_TAG 3.0.0
    GIT_SHALLOW ON
    EXCLUDE_FROM_ALL
    SYSTEM)
FetchContent_MakeAvailable(SFML)
add_executable(main src/main.cpp)
target_compile_features(main PRIVATE cxx_std_17)
target_link_libraries(main PRIVATE SFML::Graphics)

Также в папке вашего проекта добавьте папку src и поместите в неё файл main.cpp со следующим кодом:

#include <SFML/Graphics.hpp>

int main()
{
    // create the window
    sf::RenderWindow window(sf::VideoMode({ 800, 600 }), "My window");

    // run the program as long as the window is open
    while (window.isOpen())
    {
        sf::CircleShape shape(50.f);
        sf::Vector2f initpos{25.f,25.f};
        shape.setPosition(initpos);
        // set the shape color to green
        shape.setFillColor(sf::Color(100, 250, 50));

        // check all the window's events that were triggered since the last iteration of the loop
        while (const std::optional event = window.pollEvent())
        {
            window.clear();
            // "close requested" event: we close the window
            if (event->is<sf::Event::Closed>())
                window.close();
            shape.setPosition((sf::Vector2f)sf::Mouse::getPosition(window));
            window.draw(shape);
            
        }

        // clear the window with black color

        // end the current frame
        window.display();
    }
}

Порядок действий для создания проекта:

  • Прописываем в консоли следующую команду
 cmake . -G "Visual Studio 17 2022" -B .build -DCMAKE_POLICY_VERSION_MINIMUM=3.5 
  • После создания проекта находим в папке .build находим файл .sln и открываем его с помощью Visual Studio.
  • Компилируем проект. При попытке его запустить может возникнуть ошибка в отказе к доступу, решаем её следующим способом. Открываем свойства в проекта кликая правой кнопкой мыши по нему Image Image Image Теперь заново запускаем проект и вы должны увидеть окно SFML, а также кружок, который двигается за курсором.

Второй способ

Здесь мы создадим проект уже в самом редакторе Visual Studio. Для начала убедимся, что мы скачали CMake для него, поэтому мы перейдем к установщику VisualStudioSetup.exe и перейдем ко вкладке “Отдельные компоненты” и выбираем средства CMake для C++. После того, как мы убедились в создайте проект CMake в Visual Studio.

# CMakeList.txt: файл проекта CMake верхнего уровня; проведите глобальную конфигурацию
# и включите сюда подпроекты.
cmake_minimum_required (VERSION 3.8)

# Включение горячей перезагрузки для компиляторов MSVC, если поддерживается.
if (POLICY CMP0141)
  cmake_policy(SET CMP0141 NEW)
  set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
endif()

project ("SiteExample")

# Включите подпроекты.
add_subdirectory ("SiteExample")

Можно убрать строчку add_subdirectory (“SiteExample”) и добавить вместо неё

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

include(FetchContent)
FetchContent_Declare(SFML
    GIT_REPOSITORY https://github.com/SFML/SFML.git
    GIT_TAG 3.0.0
    GIT_SHALLOW ON
    EXCLUDE_FROM_ALL
    SYSTEM)
FetchContent_MakeAvailable(SFML)

add_executable(main src/main.cpp)
target_compile_features(main PRIVATE cxx_std_17)
target_link_libraries(main PRIVATE SFML::Graphics)

Также создаем в папке проекта src/main.cpp с таким же содержимым как в прошлом пункте. После чего собираем с помощью CMake нашу сборку и запускаем её.