Настройка SFML в Visual Studio вручную - PullRequest
0 голосов
/ 20 февраля 2019

Это сообщение с вопросами и ответами приходит из лотов и лотов из вопросов , связанных с библиотекой, когда люди пытаются вручную настроить свои проекты VS,Иногда ответы не являются полными или слишком конкретными.

Я хотел бы в одном посте откомпилировать, как настроить VS, чтобы иметь возможность использовать библиотеку SFML как статически, так и динамически.

Итак:

1.Как я могу настроить мой проект VS с библиотеками динамически , в общем случае?

2.Как я могу настроить мой проект VS с библиотеками статически , в общем случае?

1 Ответ

0 голосов
/ 20 февраля 2019

Во-первых, я рекомендую внимательно следовать SFML-учебнику о настройке библиотеки в Visual Studio. Если что-то пойдет не так, проверьте этот ответ.


Я разделю этот ответКак настроить в качестве динамической библиотеки и как это сделать в качестве статической библиотеки .

Общие шаги

  1. Давайте создадим проект VS (я буду использовать VS2013 и SFML 2.5.1, но это почти то же самое с другими версиями).Создайте его как ConsoleApplication и установите флажок Пустой проект .

  2. Загрузить библиотеки , последниежелательно стабильную версию, выбрав соответствующую систему (в моем случае Visual C ++ 12 (2013) - 64-битная ).Извлеките этот файл, где находится ваш .vcxproj файл.Это создаст папку с именем SFML-XXX в зависимости от вашей версии.

  3. Загрузите внешние библиотеки , в моем случае 64биты версия.Создайте папку с именем extlib внутри папки библиотеки и поместите туда эти внешние библиотеки.

  4. Создайте файл main.cpp и вставьте пример кода из Учебные пособия по SFML .

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}

SFML As Dynamic Library

  1. Перейти к Сборка-> Диспетчер конфигурации ,Если вы используете 64-битную библиотеку, сначала вы должны создать новую платформу решений.Нажмите Active Solutions Platform-> New , выберите x64 копирование из Win32 конфигурации.Я предпочитаю снять отметку Создать новые проектные платформы .

  2. Создать Debug-Dynamic и Release-Dynamic компиляция профилей.Выбрав активную платформу решений, нажмите Конфигурация (проекта) и New .Вы можете назвать его Debug-Dynamic и скопировать его из конфигурации отладки (также снимите флажок Создать новый ... ).Повторите создание конфигурации Release-Dynamic .

  3. Open Свойства проекта-> Отладка .Выберите Debug-Dynamic конфигурацию и измените поле Environment с этим значением PATH=$(ProjectDir)\SFML-2.5.1\bin;%PATH%.Это будет указывать VS, где можно найти библиотеки .dll.

  4. В разделе C / C ++ , измените поле Дополнительные каталоги включения , добавивэтот путь $(ProjectDir)\SFML-2.5.1\include.Это будет указывать на VS, где находятся .hpp файлы.

  5. На секции Linker , измените Поле дополнительных каталогов библиотеки , добавив этот путь $(ProjectDir)\SFML-2.5.1\lib.Это будет указывать VS, где .lib файлы могут быть найдены.

  6. Наконец, на Linker-> Input , измените Дополнительные зависимости поле с помощьюдобавление всех необходимых .lib файлов:

    sfml-audio-d.lib
    sfml-graphics-d.lib
    sfml-network-d.lib
    sfml-system-d.lib
    sfml-window-d.lib

Примечание -d суффикс для указания отладочных библиотек

Повторите шаги с 3 по 6 для конфигурации Release-Dynamic . Примечание , на шаге 6 библиотечные файлы не имеют суффикса -d, поскольку они являются библиотеками релиза

SFML As Static Library

  1. Перейдите на Сборка-> Диспетчер конфигурации .Создайте Debug-Static и Release-Static профили компиляции.Выбрав активную платформу решений, нажмите Конфигурация (проекта) и New .Вы можете назвать его Debug-Static и скопировать его из конфигурации отладки (также снимите флажок Создать новый ... ).Повторите создание конфигурации Release-Static .

  2. Open Свойства проекта и выберите Debug-Static configuration.В разделе C / C ++ измените Поле дополнительных каталогов , добавив этот путь $(ProjectDir)\SFML-2.5.1\include.Это будет указывать VS, где находятся .hpp файлы.

  3. Вкл. C / C ++ section-> Препроцессор *, изменить Определения препроцессора , добавив определение SFML_STATIC.Это будет указывать препроцессору, что SFML будет статически скомпилирован.

  4. В разделе Линкер измените поле Дополнительные каталоги библиотеки , добавив эти пути $(ProjectDir)\SFML-2.5.1\extlib;$(ProjectDir)\SFML-2.5.1\lib;.Это будет указывать VS, где можно найти .lib файлы из внешних источников и из SFML.

  5. Наконец, в разделе Linker-> Input , измените Дополнительные зависимости поле со всеми необходимыми .lib необходимыми файлами:

    sfml-audio-s-d.lib
    sfml-graphics-s-d.lib
    sfml-network-s-d.lib
    sfml-system-s-d.lib
    sfml-window-s-d.lib
    flac.lib
    freetype.lib
    ogg.lib
    openal32.lib
    opengl32.lib
    vorbis.lib
    vorbisenc.lib
    vorbisfile.lib
    winmm.lib
    gdi32.lib
    ws2_32.lib

Примечание -d суффикс для обозначения библиотеки отладки

Примечание2 -s суффикс для обозначения статические библиотеки

Повторите шаги 2–5 для конфигурации Release-Static . Примечание , на шаге 5 библиотечные файлы не имеют суффикса -d, потому что они выпускают библиотеки, но сохраняют суффикс -s.
...