在Windows上使用sfml库开发图形应用【vscode+MinGW配置】

本文详细指导了如何在Windows环境下,使用VSCode和MinGW编译器配置SFML库,包括下载库文件、安装编译器、配置VSCodeIntellisense以及使用Makefile和CMake进行项目编译,确保图形应用的顺利运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Windows上使用sfml库开发图形应用【vscode+MinGW配置】

在linux系统上,使用sfml库非常轻松,sudo apt install libsfml-dev就够了,此后在编译时,需要在编译选项中指明所需要的库,g++ source.cpp -o target -lsfml-graphics,此后就可以愉快地运行了。但是在windows上就复杂很多,由于笔者主要使用vscode进行开发,所以下文就介绍了如何配置vscode+sfml的开发环境。

下载sfml的库文件

这个是官方下载地址:SFML 2.6.1 (SFML / Download) (sfml-dev.org)

在这里插入图片描述

由于我使用的是MinGW编译器,所以选择了最后一行的GCC 13.1.0 MINGW(SEH) - 64bit版本的sfml库。

下载对应版本的编译器

因为刚才下载的sfml库是由特定版本的编译器编译的,所以我们也需要使用一致版本的编译器编译我们的程序,这是下载地址:WinLibs MSVCRT 13.1.0 (64-bit)。下载并解压到你喜欢的位置,我把它解压到了C:\Program Files\mingw64文件夹中,之后再把C:\Program Files\mingw64\bin加入到系统路径中,以便其他地方使用。

在加入系统路径后,在控制台中输入g++ -v,检查是否指向刚刚下载的编译器位置,如果你之前下的已经有一个编译器了,注意调整系统路径中两个编译器的先后顺序,或者直接删除此前旧版本的路径。

请添加图片描述

Vscode配置

Vscode只是一个“比较高级的”编辑器,它的最重要的功能是自动补全和智能分析,因此我们只用配置Intellisense的包含路径,使它包含刚刚下载的sfml库的include文件夹。由于我们直接把sfml库放到了工作区,所以Intellisense会自动搜索到sfml的头文件,也就不需要额外配置了。

请添加图片描述

方法一:使用Makefile编译

下图是我们工程的文件结构,我们只需要使用g++ test.cpp -g -o output/test -ISFML-2.6.1/include -LSFML-2.6.1/lib -lsfml-graphics -lsfml-window -lsfml-system -mwindows命令即可得到可执行文件test.exe,命令的最后一部分-mwindows是为了指定应用为图形子系统,而不是控制台应用,因此这样得到的可执行文件在双击后不会出现控制台,而是直接为图形界面。

请添加图片描述

为了方便,我们把这段编译命令写道makefile文件中,此后只用输入mingw32-make.exe命令就能快速的编译了。

test : test.cpp
	g++ test.cpp -g -o output/test -ISFML-2.6.1/include -LSFML-2.6.1/lib -lsfml-graphics -lsfml-window -lsfml-system -mwindows

注意:

  1. 由于编译出的可执行文件需要用到sfml的动态库,所以我们还需要把SFML-2.6.1/bin中的dll文件全部复制到生成的可执行文件的同级目录,此后才能正常运行。
  2. 如果你的程序需要用到一些资源,比如图片、字体等等,你需要妥善处理好这些资源文件的位置,在程序中最好使用绝对地址,否则,最好使用filesystem根据可执行文件的位置定位资源文件的相对位置。否则的话,这些文件很容易不能被程序找到。

有趣的地方在于,我发现如果把其他文件拖到可执行文件的图标上打开,这些文件的位置会在argv列表中传给程序的main函数,就像是在命令行加上参数调用一样。

请添加图片描述

请添加图片描述

方法二:使用CMake编译

有时候当项目变得复杂时,make工具就不太好用了,这时我们可以使用CMake来编译项目:

cmake_minimum_required(VERSION 3.15)

project(test LANGUAGES CXX)
set(CMAKE_CXX_FLAGS "-mwindows")

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output)

set(SFML_DIR "SFML-2.6.1/lib/cmake/SFML")
find_package(SFML 2.5 REQUIRED COMPONENTS graphics)
link_libraries(sfml-graphics)

add_executable(test test.cpp)

此后就可以使用cmake.exe -S . -B build -G "MinGW Makefiles"生成Makefile文件,再通过cmake.exe --build build调用mingw-make.exe来构建文件了。同样的,一定要注意资源文件的位置和sfml的动态链接库的拷贝。

请添加图片描述

不过为了方便,我们可以直接用vscode的cmake扩展,它会帮我们一键构建和一键运行,非常奈斯~

附注

之前笔者学习sfml时,写了很多(自认为)蛮有趣的例子,如果各位不清楚该如何入手的话可以参考一下,这是我的代码地址:https://github.com/leehyukshuai/learn-sfml。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值