Статическая линковка SFML в VS15

> Свободная база знаний SFML > Уроки SFML > Статическая линковка SFML в VS15

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

(кликабельно)

Не забываем про SFML_STATIC в опциях препроцессора:
Screenshot_2В некоторых версиях VS, опции препроцессора могут располагаться в одном из подменю компоновщика.

В большинстве случаев достаточно понимать: сверху идут главные, зависимые от расположенных ниже библиотек. Таблицу зависимостей можно найти в официальном туториале. Обратите внимание на winmm.lib. От нее зависят многие библиотеки, она же не зависит ни от кого, посему находится в самом снизу, сразу после sfml-system-s.lib, которой она так же требуется. Для статической debug версии, к имени библиотеки модуля нужно добавить -s-d, например sfml-system-s-d.lib. В принципе это все, разве что напомню о \include и \lib путях, частенько при создании нового пресета о них забывают.

Немного о том, зачем это нужно. На выходе после сборки у вас будет один исполняемый файл, не требующий прилинкованых библиотек. В плане итогового размера программы, вы платите только за то, что используете. Для конечного релиза, статическая версия в большинстве случаев лучше. Так же для релиза желательно убрать консоль, игрока она лишь напугает (подумает вирус какой, закроет, уничтожив при этом sfml окно).

Из заметных минусов: несколько дольше компиляция, чуть сложнее настройка проекта. Хотя последнее спорно, учитывая что при динамике, для запуска приложения в папку с игрой нужно подкладывать либы. Непосредственно для разработки в этом особо нет смысла, разве что наблюдение за размерами папки проекта для душевного спокойствия.

Буду благодарен, если поделитесь: