【问题标题】:How to Compile sfml 2.2 in cmake for code::blocks如何在 cmake 中为 code::blocks 编译 sfml 2.2
【发布时间】:2015-03-24 10:30:14
【问题描述】:

我对新的 sfml 有一个很大的问题,我花了一天的时间试图解决这个问题。我终于发现我需要用 cmake 对其进行服装编译。最大的问题是 cmake 一直要求 CMakeLists.txt 并且它不存在。请帮助我,我只想开始用 sfml 编码。我正在运行 Windows 8.1,如果您需要更多信息,请询问我,我会尽力为您提供。如果我看错了问题,请您提出一个新的解决方案。

【问题讨论】:

  • 根据其github repository,根目录下有一个CMakeLists.txt。
  • 这个问题现在已经修复,只是它现在说我的计算机中缺少 libgmp-10.dll

标签: c++ cmake codeblocks sfml


【解决方案1】:

在我看来,构建 SFML 最简单的方法是使用“MinGW Makefiles”CMake 生成器和 CMake GUI。所以这里有一个关于如何以这种方式构建 SFML 的简短教程。

准备你的开发环境

如果你的MinGW编译器的bin目录在PATH中没有,可以通过打开命令提示符临时添加(Windows Key+R并输入cmd+Enter):

set PATH=<path_to_your_mingw_compiler>\bin;%PATH%

接下来,您可以通过在命令提示符下键入 cmake-gui 来启动 CMake GUI。如果 CMake 的 bin 目录尚未添加到 PATH,我强烈建议您以与上述类似的方式这样做。

然后设置SFML的路径和构建路径,我通常只使用子目录build\

设置 CMake

然后按Configure 按钮并选择MinGW Makefiles 生成器。

注意:如果您使用 MSYS,则需要改用 MSYS Makefiles 生成器。

下一步,您可以更改各种 CMake 变量。可以在official SFML CMake tutorial 中找到这些选项的完整说明。重要的部分之一是更改 CMAKE_INSTALL_PREFIX,因为默认 CMake 值会出现权限问题,并且您实际上不希望将库文件安装在那里。也不要选择构建目录,否则安装会很混乱。我个人更喜欢使用子目录/install

在您更改了您想要更改的所有内容后,您可以点击Generate,您应该会收到两条完成消息。

实际构建 SFML

CMake 仅生成 makefile 和项目文件,因为像 C++ 库这样的 SFML 还没有构建,因此我们接下来需要这样做。为此,我们切换回命令提示符并将目录更改为我们之前在 CMake 中设置的构建目录。

由于我们希望将所有内容都直接安装到之前指定的CMAKE_PREFIX_INSTALL 目录,我们现在将运行makefile 的install 目标。此外,由于我们最有可能使用多核处理器,因此我们真的希望快速构建事物,从而使用-jN 标志,其中N 是一个整数,指定应使用多少线程。请记住,如果您为系统选择的数字太高,这可能会真正冻结您的系统。输入命令mingw32-make install -jN如下图。

注意:如果您使用 MSYS(或 nuwen 的 MinGW 编译器),您需要使用 make 而不是 mingw32-make

等待进程完成并检查install 目录。

恭喜您已成功构建 SFML!


使用 Code::Blocks 代替

如果你真的想要一个 Code::Blocks 项目文件,那么你可以重复上面的前几个步骤,但不要选择 MinGW Makefiles CMake 生成器,而是选择 CodeBlocks - MinGW Makefiles

调整上面提到的设置,包括CMAKE_INSTALL_PREFIX和按下Generate按钮。一切生成后,你可以去打开build目录下的Code::Blocks项目文件。

在 Code::Blocks 中,您可以轻松选择首选目标(推荐使用install)并单击构建按钮。

等待进程完成并检查install 目录。

恭喜您已成功构建 SFML!

【讨论】:

  • 我正在尝试阅读本教程,但被困在 cmake-gui 上,此时它显示无法识别。我已经粘贴了我在这里所做的pastebin.com/fzP3kWfB
  • 你不能独立于一些固定的教程思考一步吗?如果 CMake 不在 PATH 中,您只需通过开始菜单或浏览程序目录打开它...i.imgur.com/5cyqquq.png
  • 是的,当然我在评论之前尝试过,但实际上发生了完全相同的错误,所以这没有帮助。之所以问是因为当我没有按照教程进行操作时,我遇到了同样的错误。我得到的错误日志在过去的 bin 中:pastebin.com/v39EUY8h
  • 确保 a) Code::Blocks 已正确安装 b) MinGW 已正确安装 c) CMake 已正确安装(并且是最新的)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多