具有MinGW版本8.2.0和Atom文本编辑器的C ++ SFML

时间:2019-06-18 03:52:04

标签: c++ g++ mingw atom-editor sfml

我正在尝试学习使用带有SFML库的c ++制作2D游戏。我正在使用Windows,但是我更喜欢使用Atom文本编辑器而不是Visual Studio。我对如何执行此操作进行了大量研究,但我仍然不知道如何将SFML库与Atom一起使用。因此,我将如何在以Atom编写的c ++项目中实现SFML库。谢谢!

2 个答案:

答案 0 :(得分:1)

此答案假设您已经下载了SFML的32位MinGW版本,并且希望从命令行 1 编译用Atom编写的程序。在您刚刚下载的SFML文件夹中,现在有三个对我们很重要的文件夹:bin,lib和include。

  • bin文件夹包含DLL。在这个答案中,我仅讨论动态链接到SFML,因为这是我的经验。要运行使用SFML构建的任何动态链接的可执行文件,您需要将所有相关的DLL复制到与可执行文件相同的文件夹中。 (哪些是相关的?简单的解决方案是只复制所有这些。 2

  • lib文件夹包含库(扩展名为.a的文件)。如果转到安装MinGW的文件夹(默认为C:\ MinGW),然后按照路径\ lib \ gcc \ mingw32 \ 8.2.0进行操作,则您应位于一个包含几个子文件夹的文件夹中,其中一些.o文件和一堆.a文件。将SFML lib文件夹中的所有文件复制到此处。现在,MinGW知道了SFML库。

  • 最后,include文件夹包含一个名为SFML的文件夹,该文件夹包含所有SFML头文件。复制SFML文件夹。现在还记得我们在最后一步中将所有.a文件转储到的文件夹吗?该文件夹应具有一个名为include的子文件夹,该子文件夹包含一个名为C ++的文件夹,该文件夹包含所有标准C ++头文件(iostream,算法等)。将CSF文件夹粘贴到C ++文件夹中。 (不是文件夹的 contents ,而是文件夹本身。)现在,MinGW知道SFML标头,因此我们可以安全地键入例如。 #include <SFML/Graphics.hpp>

例如,要编译this tutorial末尾的文件main.cpp并将其与Atom动态链接,您可以在cmd.exe内部运行命令g++ main.cpp -lsfml-graphics -lsfml-window -lsfml-system


免责声明:复制库和包含文件夹不是SFML建议的方法。相反,他们建议使用命令行参数来告诉g ++查找位置。但是IMO(1)他们的方法对于初学者来说更是痛苦,并且(2)初学者不太可能使用多个编译器或SFML的多个版本。 (如果您正在使用多个编译器或SFML的多个版本,则需要使用它们的方式。在这种情况下,请告诉我,我可以尝试提供帮助。)


1)实际上,您可能希望通过单击按钮直接在Atom中进行编译(默认情况下为F5?)。如果您已经知道如何在Atom中直接编译非SFML应用程序,那么只要您在Atom中适当地设置默认编译器标志,以上内容就足以让您编译SFML应用程序。 (我的意思是:对于上面的示例,您的标志应依次包含-lsfml-graphics-lsfml-window-lsfml-system。)

2)要弄清楚您需要什么DLL,可以将它们全部添加并开始删除它们,直到您的应用程序无法工作为止。另外,请记住以下三点:

  • 您始终需要openal32.dll
  • 您需要在编译时链接到的DLL
  • 如果在调试模式下进行编译,则需要带有“ -d”的版本(例如sfml-graphics-d-2.dll),否则,则需要不带-d的版本

因此,在上面的示例中,您只需要openal32.dll,sfml-graphics-2.dll,sfml-window-2.dll和sfml-system-2.dll。

答案 1 :(得分:0)


您需要Atom Packages

因此,iam当前正在为Atom上的SFML编译开发新的软件包。 我只需要编写Docs并将其设为Atom程序包,但请查看存储库:https://github.com/brhaka/sfml-compiler

您可以为此做出贡献,或者只是加星标:)

我正在努力使其尽快发布,所以我建议您稍等一下。有另一个软件包,但是没有文档。

您的名字真的很酷!


希望这对您有帮助!

布拉卡(Brhaka)