Устанавливаем 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
P.S. Правда, в итоге всё равно путь не помог, возможно, стоило сначала перезагрузить компьютер, но я этого давно уже не делал :)
Обращаемся к верхнему меню Проект - Свойства: [Имя_проекта] и дальнейшие настройки выполняем там.
Прописать каталог для поиска включаемых файлов 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 просмотров]