如何在cmake中为code :: blocks编译sfml 2.2

时间:2015-01-25 23:33:41

标签: c++ cmake codeblocks sfml

我遇到了新的sfml的一个大问题,并且花了一天时间试图解决这个问题。我终于发现我需要用cmake编译它。最大的问题是cmake一直要求CMakeLists.txt而不是那里。请帮帮我,我只想在sfml中开始编码。我正在运行Windows 8.1,如果您需要更多信息,请问我,我会尽力给您。如果我看错的问题,请你提出一个新的解决方案。

1 个答案:

答案 0 :(得分:5)

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

准备您的开发环境

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

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

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

Set PATH and open the CMake GUI

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

Set the source & build directory

设置CMake

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

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

Pick the generator

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

Install path option

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

Successful configuration

实际构建SFML

CMake只生成makefile和项目文件,因为尚未构建作为C ++库的SFML,因此我们需要接下来。为此,我们切换回命令提示符并将目录更改为我们之前在CMake中设置的构建目录。

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

注意:如果您正在使用MSYS(或nuwen的MinGW编译器),则需要使用make代替mingw32-make

Build the install target

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

恭喜您成功构建了SFML!


使用Code :: Blocks

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

Code::Blocks generators

如上所述调整设置,包括CMAKE_INSTALL_PREFIX,然后按下Generate按钮。生成所有内容后,您可以打开build目录中的Code :: Blocks项目文件。

Code::Blocks project file

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

Code::Blocks target

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

恭喜您成功构建了SFML!