БлогNot. Устанавливаем SFML в Visual Studio 2019 и компилируем простую игру

Устанавливаем SFML в Visual Studio 2019 и компилируем простую игру

Сейчас есть рекомендуемый путь установки библиотек, подобных SFML, состоящий в том, что в Studio имеется менеджер пакетов NuGet и теоретически всё должно быть просто:

Создаём консольное приложение, в "Обозревателе решений" жмём на выделенным жирным имени проекта правой кнопкой мыши, выбираем команду "Управление пакетами NuGet", во вкладке "Обзор" поиском находим sfml_graphics и устанавливаем последнюю версию (2.5.1 в данный момент).

Увы, и на диске (у меня в c:\Users\Admin\.nuget), и в папке проекта создалась куча файлов, но без настройки свойств проекта они всё равно обойтись не помогли, по крайней мере, у меня не вышло.

Поэтому установим SFML "по старинке" и скомпилируем в ней небольшую игру вот по таким мотивам, была у меня в детстве эта штучка, прелесть (и сейчас, вроде, где-то есть, только крышечка от батарейного отсека пропала :)

Сначала действительно создадим пустой проект C++ и добавим туда файл Source.cpp как по этой ссылке.

Затем скачаем библиотеку SFML вот отсюда, я взял 64-битную для Visual C++ 15 (2017), новее не вижу. Распаковать архив там, где удобно, у меня путь d:\Nick\sfml, но можно и в папку проекта, только не забывайте пути с пробелами брать в двойные кавычки и не надо кириллицы в именах папок пути.

Жмём правой кнопкой на значке Компьютер, выбираем Свойства, добавляем следующий путь в переменную path (порядок выбора инструментов для Windows 10 здесь и далее показан цифрами на рисунках):

Добавление пути к библиотекам SFML в path
Добавление пути к библиотекам SFML в path

P.S. Правда, в итоге всё равно путь не помог, возможно, стоило сначала перезагрузить компьютер, но я этого давно уже не делал :)

Обращаемся к верхнему меню Проект - Свойства: [Имя_проекта] и дальнейшие настройки выполняем там.

Прописать каталог для поиска включаемых файлов SFML
Прописать каталог для поиска включаемых файлов SFML

Обратите внимание, что я поставил правильную платформу x64 и конфигурацию Release, в которой собираюсь линковать проект (1, 2).

Прописываем дополнительный каталог библиотек для компоновщика
Прописываем дополнительный каталог библиотек для компоновщика
Прописываем дополнительные зависимости для компоновщика
Прописываем дополнительные зависимости для компоновщика

Здесь я прописал имена библиотек именно для конфигурации Release, если хотите для Debug, то имена будут sfml-graphics-d.lib, sfml-window-d.lib и sfml-system-d.lib.

Прописываем определение для препроцессора
Прописываем определение для препроцессора

Для статической сборки теоретически следует прописать SFML_STATIC вместо SFML_DYNAMIC, но у меня с этим так и не вышло - всё равно error LNK2001: неразрешенный внешний символ "public: static class sf::RenderStates const sf::RenderStates::Default" и ещё два для определений цветов.

Помещаем в файл Source.cpp код игры :)

Теперь проект должен работать при запуске из среды, а для "отдельного" запуска исполняемого файла нам всё равно придётся скопировать в папку с exe'шкой файлы background.png, egg.png, wolf.png и cyrilicold.ttf из папки проекта и, возможно, если новое значение в path ещё не работает, sfml-graphics-2.lib, sfml-window-2.lib и sfml-system-2.lib из папки d:\Nick\sfml\bin (или вашей папки вместо d:\Nick).

Вот что у нас вышло, волк собирает яйца, управление - клавишами со стрелками.

Игра в работе
Игра в работе

 Скачать архив .zip с решением Visual Studio 2019 на C++, папка решения уже создана внутри архива (732 Кб)

Этот проект настроен на мои пути в файлам, так что если у вас они свои, придётся повторить описанные в статье шаги по настройке (за эти настройки, увы, отвечает не файл проекта, а файл .suo из вложенной папки .vs, обычно файл и папка имеют атрибут "Скрытый").

В исходнике (а он состоит из единственного файла Source.cpp около 170 строк) много повторяющихся фрагментов, его нетрудно оптимизировать, думаю, сумев запустить приложение, вы справитесь с этим. Все действия прокомментированы.

12.12.2021, 23:51 [1689 просмотров]


теги: программирование c++ игра софт графика studio

К этой статье пока нет комментариев, Ваш будет первым