我正在尝试学习使用带有SFML库的c ++制作2D游戏。我正在使用Windows,但是我更喜欢使用Atom文本编辑器而不是Visual Studio。我对如何执行此操作进行了大量研究,但我仍然不知道如何将SFML库与Atom一起使用。因此,我将如何在以Atom编写的c ++项目中实现SFML库。谢谢!
答案 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,sfml-graphics-2.dll,sfml-window-2.dll和sfml-system-2.dll。
答案 1 :(得分:0)
因此,iam当前正在为Atom上的SFML编译开发新的软件包。 我只需要编写Docs并将其设为Atom程序包,但请查看存储库:https://github.com/brhaka/sfml-compiler
您可以为此做出贡献,或者只是加星标:)
我正在努力使其尽快发布,所以我建议您稍等一下。有另一个软件包,但是没有文档。
您的名字真的很酷!
希望这对您有帮助!
布拉卡(Brhaka)