【发布时间】:2013-01-25 09:38:41
【问题描述】:
我正在使用 Visual Studio 2012,我想编译我的图形应用程序,它使用 SFML 框架,使用 /MT 编译器标志而不是 Visual Studio 默认的 /MD。这可以在Configuration -> C/C++ -> Code Generation -> Runtime Library 的项目设置中进行设置。提到的标志控制是动态 (/MD) 还是静态 (/MT) 链接 Windows 运行时库。
仅在我自己的应用程序的项目文件中更改此设置会导致链接器错误,因为RuntimeLibrary 的值在 SFML 中设置为 MD_DynamicRelease,但在我的项目中却是 MT_StaticRelease。因此我需要用 /MT 标志编译 SFML。我使用 CMake 创建了 Visual Studio 项目文件,但在项目设置中设置少得多。关键是甚至没有一个类别Configuration -> C/C++。
那么如何找到选项页面或手动设置/MT 标志?
(顺便说一下,选项页面的名称可能并不完全正确,因为我是从我遗憾地使用的 Visual Studio 的德语版本翻译过来的。)
【问题讨论】:
-
SFML CMake 脚本应该已经提供了静态链接运行时库的选项 (SFML_USE_STATIC_STD_LIBS)。
-
只有当您没有在“解决方案资源管理器”窗口中选择项目,而是选择源文件时,您才会获得“较少的设置”。请务必右键单击 项目 并选择“属性”。顺便说一句,在 SFML 中选择 /MD 是有充分理由的。当您使用 /MT 构建时,您确实应该构建一个静态库而不是 DLL。虽然你可能在 VS2012 中侥幸逃脱。
-
@HansPassant。可用的设置较少,我打开了项目设置。无论如何,我对 SFML 使用 /MD 的充分理由很感兴趣。我希望将我的应用程序构建为可执行文件。
-
@AndreiTita。谢谢,我使用了 CMake 选项并且它有效。如果您要写一个简短的答案,我会将其标记为已接受。
标签: c++ visual-studio compiler-construction windows-runtime sfml