Как настроить библиотеку SFML C++ в Visual Studio 2022 статическая компоновка

b26a5c0b6c9887945c42d06b31ddcc25.jpg

В этой статье рассказывается, как настроить ваши проекты SFML С++ со статической компоновкой используя интегрированную среду разработки программного обеспечения Visual Studio.

Установка SFML библиотеки

Загрузите библиотеку SFML c официального сайта. Выбираем самую последнюю версию софта, на сегодня это версия SFML 2.6.1.

b3bba2a28c7f7975bea739ce9d128ae0.png

Скачанный архив Вы можете распаковать в любую папку. Я распаковываю на диск С: в папку IT (C:\IT).

Настройка проекта SFML

Создаём проект консольное приложение в Visual Studio.

e86ebc63d46d6884488c8c9a6b16a2b3.png

Настраиваем созданный проект

5184788553373dd4f910babd4254a25f.png

Если вы используете 32 разрядную библиотеку SFML тогда выбираете платформу win 32, я использую 64 разрядную и выбираю платформу x64.

Настраиваем свойство С/С++

С/С++ →Общие →Дополнительные каталоги включаемых файлов (включаем каталог include библиотеки SFML)

deb8b98b6625a83e499e73845e765f11.png850fb19f909dd276d967550bd4ac681f.png

С/С++ → Препроцессор → Определение препроцессора (дописываем параметр SFML_STATIC)

f92d6f1fe818b2bb3a317610fce2be74.png

Настраиваем свойство Компоновщик

Компоновщик → Общие → Дополнительные каталоги библиотек (включаем каталог lib)

7c99c8f1705741deb8a563c9fba683f0.pngdc3ceb76a1d8fba75c8576ec7ac612e4.png

Связываем наше приложение с файлами SFML *.lib

Компоновщик → Ввод → Дополнительные зависимости

595d7078dc03a3bef2e159e73fd29544.png

Копируем название библиотек в поле окна дополнительные зависимости

Конфигурация Debug:

sfml-graphics-s-d.lib

sfml-window-s-d.lib

sfml-system-s-d.lib

sfml-audio-s-d.lib

sfml-network-s-d.lib

opengl32.lib

openal32.lib

freetype.lib

winmm.lib

gdi32.lib

flac.lib

vorbisenc.lib

vorbisfile.lib

vorbis.lib

ogg.lib

ws2_32.lib

Конфигурация Release:

sfml-system-s.lib

sfml-window-s.lib

sfml-network-s.lib

sfml-audio-s.lib

sfml-graphics-s.lib 

opengl32.lib

openal32.lib

ws2_32.lib

winmm.lib

ogg.lib

vorbis.lib

flac.lib

vorbisenc.lib

vorbisfile.lib

freetype.lib

gdi32.lib

4c16e124df1d23e5f1796c1ee4dc9a0f.png

Для исчезновения консоли с отображения на экране после запуска проекта SFML вносим дополнительные настройки, обычно их используют в конфигурации Release.

 Компоновщик → Система → Подсистема (Windows/SUBSYSTEM: WINDOWS)

d67ff02b89b6a777ac01b01ceeeeb7f7.png

Создаём точку входа: mainCRTStartup

Компоновщик → Дополнительно → Точка входа

45d73c8ffd7ceca7f20c8018c97feb94.png

Незабываем в конце нажать кнопку применить.

 Для работы с 3D звуком в играх, копируем файл openal32.dll из папки SFML-2.6.1\bin\  в папку Windows\System32\ 

По умолчанию в операционной системе Windows данный файл отсутствует.  

Шаблон кода для проекта библиотеки SFML С++

#include 

int main()
{

    sf::RenderWindow window(sf::VideoMode(600, 400), L"Иллюзия", sf::Style::Default);

    window.setVerticalSyncEnabled(true);
    sf::Vector2f a1{100,100};
    sf::Vector2f a2{500,200};
    sf::Vector2f a3{500,200};
    sf::Vector2f a4{100,300};
    bool lu = true;
    sf::ConvexShape convex;
    convex.setPointCount(4);
    convex.setFillColor(sf::Color::Magenta);
    
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        if (lu) { a1.y += 1; a4.y -= 1; a2.y -= 1; a3.y += 1; if (a1.y > 200) lu = false; }
        else { a1.y -= 1; a4.y += 1; a2.y += 1; a3.y -= 1; if (a1.y <  100) lu = true; }
        convex.setPoint(0, a1);
        convex.setPoint(1, a2);
        convex.setPoint(2, a3);
        convex.setPoint(3, a4);
        window.clear(sf::Color::Blue);
        window.draw(convex);
        window.display();
    }
    return 0;
}

f2b63d3f29230ead5b609e03b3274a03.png

Если после выполнения кода программы Вы увидите четырёхугольник, значит Вы сделали всё правильно, создав свой первый проект SFML C++ со статической компоновкой.​

Создаём шаблон для проектов SFML C++ в IDE Visual Studio 2022

В нашем созданном проекте выбираем меню:

Проект→ Экспорт шаблона

56239ba32cb2bf0dfc8609965a073ccd.png

В появившемся окне выбираем шаблон проекта и нажимаем кнопку далее.

fb252c5e706c6630617958c834998b1f.png

Заполняем графы: имя шаблона, описание шаблона, изображения значка, просмотр изображения. Ставим ниже все галочки и нажимаем кнопку готово.

320a0215e2f531e2e112f8cb86b73bdb.png

В появившемся окне проводника находим архив шаблона и распаковываем его.

4ac46413983258a3560e6819c8085fc7.png

Заходим в папку с распакованными файлами и с помощью блокнота открываем файл MyTemplate.vstemplate.

e5f7ad173cd27202bba44246980594e8.png

Вносим изменения обозначенные на картинке ниже.

Sample SFML Static C++

Написание игр на С++ используя мультимедийную библиотеку SFML

VC

Cpp

Windows

Games

Переменная названия файлов проекта — $safeprojectname$

d5486f090f736f7eb4e7acd746fcb2bb.png

Вносим переменную в два последующих файла.

Sample SFML Static C++1.vcxproj

f8a2dee307a04b7e483aaa694343e12a.png

Sample SFML Static C++1.vcxproj.filters

b802e7b817aa8df2389e9996f8480564.png

Копируем изменённые файлы обратно в архив шаблона.

1fa003b5953c98c2629afbb1dc44a222.png

Копируем архив шаблона из папки

C:\Users\пользователь\Documents\Visual Studio 2022\My Exported Templates

В папку

C:\Users\пользователь\Documents\Visual Studio 2022\Templates\ProjectTemplates

Запускаем Visual Studio 2022, находим наш шаблон SFML и используем его для своих проектов.

9f1eafa4b415493539d97326fb4cade2.png

Если что-то у Вас не вышло, то более подробную инструкцию подключения библиотеки SFML к Visual Studio 2022, а также создание шаблона библиотеки SFML в Visual Studio, вы можете получить, посмотрев видео «Подключение библиотеки SFML C++ статическая компоновка»

Habrahabr.ru прочитано 9425 раз