我知道互联网上有一些有关此主题的材料,但是我仍然需要帮助。我想编译我的c ++ / sfml项目,并获得一个.exe文件,可以将其发送给我的朋友。我有头文件,cpp文件,源文件(txt,png)和sfml库。如何编译所有这些文件?我已经知道如何使用' Visual Studio 2017开发人员命令提示符'编译标准代码,但是我的问题是外部文件和sfml文件。我还将更喜欢使用 Cmake 而不是命令提示符。
感谢您的任何帮助, 阿拉德。
答案 0 :(得分:0)
为了使您的项目能够使用库,它必须与ABI兼容,这实际上意味着它必须已使用相同的编译器进行编译,但不一定必须同时进行。这简化了过程,因为这意味着您不必编写CMakeLists.txt
文件的怪物。相反,这是我的建议:
首先,设置vcpkg
,您可以从here获得。您必须自己构建它,但这非常容易。从字面上看,您要做的就是运行批处理文件。假设您的构建环境已正确设置,但是您说您已经在使用命令提示符,所以我假设您很好。
一旦构建了vcpkg,就可以使用它来安装sfml。 vcpkg的工作方式是,从中央存储库下载源代码并为您构建源代码(确保同时具有git和cmake),然后可以通过集成vcpkg从Visual Studio中使用它们。 (我相信,在安装库时,请确保使用正确的三元组设置。如果您使用的是64位Windows,则应该是x64-windows
。)
注意:您必须首先通过运行vcpkg integrate install
集成vcpkg,然后在项目的CMakeSettings.json
文件中添加vcpkg工具链文件的位置。 如果您没有执行这两个步骤,或者您做错了它们,则将无法使用。
成功完成此操作后,您将能够集成SFML或vcpkg提供的其他任何库。
对于实际构建项目,有数十亿个简单的CMakeLists文件教程,但我想强调一些事情。您必须发送给朋友以供他们运行项目的文件是SFML库dll和项目exe。否则,在尝试运行您的.exe文件时,他们将收到错误消息。
我不确定您为什么不想使用命令提示符,因为配置和构建这样的项目非常容易。您绝对可以使用CMake GUI,但是除非您合理地希望能够配置那么多设置(记住,您必须是要增加这种灵活性的设置),否则您只能使用{{1} }并随身携带。
给出了最简单的解决方案后,如果您绝对觉得由于某种原因必须自己手动编译SFML,这样做非常简单。与以前一样,您可以get the source from Github或网站,然后只需对其进行配置和构建。我喜欢先使用CMake GUI来查看所有配置选项,但是旧的cmake -G "Visual Studio 15 2017 Win64" -T host=x64 <src-dir> && cmake --build <src-dir> --config Release --target install
也可以在这里使用。
请注意,我一直传递cmake -G "Visual Studio 15 2017 Win64" -T host=x64 <src-dir> && cmake --build <src-dir> --config Release --target install
选项,并在生成器上指定-T host=x64
。如果您不这样做,Visual Studio将默认为x86主机。 CMake会生成,并将build命令传递给编译器,然后怪,您有了一个库。请记住也要构建调试配置,否则-剧透警报-在开发时将无法调试。