gpt4 book ai didi

c++ - 使用 CMake 为 Visual Studio 2012 编译 SFML

转载 作者:行者123 更新时间:2023-11-28 06:52:00 24 4
gpt4 key购买 nike

在我开始这个问题之前,我只想明确我想要 SFML 与 runetime 的静态链接,因为我想静态链接 mvsc.dll,所以没有人必须安装它们或依赖它们。

我成功地为来自网站的源做了这个工作,但它有同样的问题。

问题。我从 github 下载 SFML 作为 zip,解压它。然后我通过 Visual Studio 命令提示符启动 cmake-gui 并正确填写路径,并对其进行配置,以便取消选中 BUILD_SHARED_LIBS 并选中 SFML_USE_STATIC_STD_LIBS。之后我生成了代码。

问题从这里开始。当我尝试编译任何生成的项目(ALL_BUILD、ZERO_CHECK、SFML)时,它会生成所有库,但是当它越过那个(不知道它是如何工作的)时,Visual Studio 会弹出错误:“无法启动程序 'H:/SFML/SFML-Static/Release/ALL_BUILD'。”这是不存在的(Release 和 Debug 文件夹都是空的)。我认为因此我没有得到包含文件夹(它没有生成并且在 CMake 项目中没有标志)。

有办法解决这个问题吗?还是我应该从 github 源复制 include 文件夹?

此外,我不知道我是否应该在 src/SFML 中运行项目,但是当我尝试(例如 INSTALL 或 sfml-system)编译它们时(它们都是可视化项目)它弹出错误“文件' ' 不见了”

一些见解会很好,因为我已经花了 2 个小时了。

最佳答案

听起来您对 CMake 生成的项目的正确用法感到困惑。

Here the problem begins. When I try to compile any of the projects generated(ALL_BUILD, ZERO_CHECK, SFML) it generates all libs but when it moves past that(dont know how it works inside) Visual Studio pops error: "Unable to Start Program 'H:/SFML/SFML-Static/Release/ALL_BUILD'." which is nonexistant(both folders Release and Debug are empty).

通常,编译项目的方式是简单地点击顶部栏中的向上绿色箭头。这会编译您的程序,生成可执行文件。然后,它运行那个可执行文件。

当你在 SFML 项目中点击 VS 中的绿色箭头时,它仍然会编译它。听起来这一步成功了,因为你说库已经生成了。接下来,它会尝试运行生成的可执行文件。但是,SFML 不会生成可执行文件,因为它是一个库。它只是供您使用的类和函数的集合;没有代码可以运行。因此,当 VS 尝试运行生成的可执行文件时,它会出错,因为一开始就没有生成。

“修复”这个问题的方法是,不要点击运行按钮,只需右键单击 SFML 项目并点击“构建”。这将编译但不会尝试运行该项目。

I think that because of this I dont get the include folder(it is not generated and there is no flag in CMake project for it). Is there a way to fix this? Or am I supposed to copy the include folder from the github source?

Visual Studio 不需要生成包含文件夹。它与 github 源代码中的完全相同。但是,您也不应将此文件夹复制到您自己的项目中。添加包含目录的正确方法是转到 Tools/Options/Projects and Settings/VC++ Directories/Include files 并将 SFML 包含目录添加到此属性。然后,您的项目将知道在哪里寻找包含,#include "SFML/System.hpp" 之类的东西将起作用。

Before I start the question, I just want to make clear that I want SFML with static linkage to runetime because I want to statically link the mvsc.dlls so noone has to install them or to relly on them.

您可能不需要自己编译 SFML 来执行此操作。我相信您可以通过转到 configuration properties/c/c++/code generation/[Runtime Library] 并更改该选项来切换到在自己的项目中使用静态库;然后,您不必在每次新版本发布时都依赖于使用静态 C++ 库编译一个版本的 SFML。

关于c++ - 使用 CMake 为 Visual Studio 2012 编译 SFML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23793098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com