在 Visual Studio 上手动配置 SFML

Configuring SFML on Visual Studio manually

此问答 post 来自 lots and of questions related to 库,当人们尝试手动配置他们的 VS 项目时。有时答案不完整或过于具体。

我想在单个 post 中编译如何配置 VS 以便能够静态和动态地使用 SFML 库。

所以:

1.我如何使用 动态地 配置我的 VS 项目?

2。如何以一般方式使用 静态 配置我的 VS 项目?

首先,我建议仔细遵循 SFML tutorial 关于在 Visual Studio 中配置库的内容,如果出现问题,请检查此答案。


我会把这个答案分成两组,如何配置作为动态库和如何配置作为静态库.

常用步骤

  1. 我们来创建一个VS工程(我会用VS2013和SFML 2.5.1,其他版本都差不多)。将其创建为 ConsoleApplication 并检查 Empty Project.

  2. 下载,最好是最新的稳定版,select你对应的系统(在我的情况下Visual C++ 12 (2013) - 64 位)。将此文件提取到您的 .vcxproj 文件所在的位置。这将创建一个名为 SFML-X.X.X 的文件夹,具体取决于您的版本。

  3. 下载external libraries, in my case 64 bits版本。在库文件夹中创建一个名为 extlib 的文件夹,并将这个外部库放在那里。

  4. 创建一个 main.cpp 文件,并粘贴来自 SFML tutorials 的示例代码。

#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 作为动态库

  1. 转到构建->配置管理器。如果您使用的是 64 位库,首先您应该创建一个新的解决方案平台。单击 Active Solutions Platform->New,select x64Win32 复制配置。我更喜欢取消选中 创建新项目平台

  2. 创建 Debug-DynamicRelease-Dynamic 编译配置文件。使用您的活动解决方案平台 selected,单击 Configuration(项目的)和 New。您可以将其命名为 Debug-Dynamic 并从调试配置中复制它(另外,取消选中 Create new...)。重复创建 Release-Dynamic 配置。

  3. 打开项目属性->调试。 Select Debug-Dynamic 配置并使用此值 PATH=$(ProjectDir)\SFML-2.5.1\bin;%PATH% 修改字段 Environment。这将指示 VS 在何处可以找到 .dll 个库。

  4. C/C++ 部分,修改 Additional include directories 字段,添加此路径 $(ProjectDir)\SFML-2.5.1\include。这将指示 .hpp 文件所在的 VS。

  5. Linker 部分,通过添加此路径 $(ProjectDir)\SFML-2.5.1\lib 修改 Additional library directories 字段。这将指示 VS 在何处可以找到 .lib 个文件。

  6. 最后,在 Linker->Input 上,修改 Additional dependencies 字段,添加所有 .lib需要的文件:

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

注意-d后缀表示调试库

  1. 使用 Release-Dynamic 配置重复步骤 3 到 6。 注意,在第 6 步,库文件没有 -d 后缀,因为它们是发布库

SFML 作为静态库

  1. 转到构建->配置管理器。创建 Debug-StaticRelease-Static 编译配置文件。使用您的活动解决方案平台 selected,单击 Configuration(项目的)和 New。您可以将其命名为 Debug-Static 并从调试配置中复制它(另外,取消选中 Create new...)。重复创建 Release-Static 配置。

  2. 打开项目属性和selectDebug-Static配置。在 C/C++ 部分,通过添加此路径 $(ProjectDir)\SFML-2.5.1\include 修改 Additional include directories 字段。这将指示 .hpp 文件所在的 VS。

  3. C/C++部分->Preprocessor*,修改Preprocessor definitions字段,添加SFML_STATIC 定义。这将指示预处理器 SFML 将被静态编译。

  4. Linker 部分,通过添加此路径 $(ProjectDir)\SFML-2.5.1\extlib;$(ProjectDir)\SFML-2.5.1\lib; 修改 Additional library directories 字段。这将指示 VS 在何处可以找到来自 外部来源 和来自 SFML 的 .lib 文件。

  5. 最后,在 Linker->Input 部分,修改 Additional dependencies 字段所有 .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后缀表示静态库

  1. 使用 Release-Static 配置重复步骤 2 到 5。 注意,在第 5 步,库文件没有 -d 后缀,因为它们是发布库,但它们将保留 -s 后缀。