Windows11上使用VS2026和CMake 4.2.1编译构建GLFW源代码
Windows11上使用VS2026和CMake 4.2.1编译构建GLFW源代码
最近在看TheCherno的OpenGL教程,其B站上面也有相关资源,地址为:【OpenGL入门教程】中文配音|双语字幕|Cherno【25】
本视频教程介绍了如何在OpenGL中创建一个测试框架和测试类,以便在沙盒环境中展示和测试OpenGL的各种特性。视频中,作者Eterno详细讲解了如何扩展测试类,创建一个测试菜单,使得用户可以选择并运行特定的测试,同时能够在返回主菜单时自动删除当前测试并释放资源。此外,作者还提到了如何利用lambda表达式动态创建测试实例,并展示了如何实现一个简单的UI来管理和切换测试。最后,作者鼓励观众加入Discord社区,讨论编程、开发、图形和游戏等相关话题。作者在第2节视频中引入了GLFW库,地址为:【02】设置OpenGL并在C++中创建窗口
一.GLFW简介
GLFW 是一个免费、开源、跨平台的库,用于 OpenGL、OpenGL ES 和 Vulkan 应用程序开发。它提供了一个简单、平台无关的 API,用于创建窗口、上下文和曲面,读取输入,处理事件等等。
其官方网站地址为:https://www.glfw.org/
源代码Github仓库地址为:https://github.com/glfw/glfw
我们可以通过两个地方去下载GLFW源代码,GLFW官方地址为:https://www.glfw.org/download.html,如下图所示:
或者去https://github.com/glfw/glfw Github仓库去下载源代码:
git clone https://github.com/glfw/glfw.git

目前GLFW最新稳定版本是3.4
我们直接通过`git clone https://github.com/glfw/glfw.git’命令下载GLFW源代码,下载后的GLFW源代码目录结构如下图所示:
二.相关工具准备
由于是Window11系统,编译GLFW源代码前,需要下载安装Visual Studio和Cmake工具,截止目前为止,Visual Studio最新版本是VS2026,CMake最新版本是4.3.1,我的电脑上安装的是CMake 4.2.1版本,至于下载安装就不赘述了。
三.使用CMake和VS2016编译GLFW源代码
为了方便,我们使用CMake GUI工具来编译GLFW源代码
1.在源代码目录下创建一个build目录
首先我们在下载后的GLFW源代码目录新建一个build的文件夹,用于放置我们编译产物,
如下图所示:
2.使用CMake GUI和Visual Studio编译GLFW源代码
设置源代码路径和编译路径
使用CMake GUI和Visual Studio编译GLFW源代码,生成makefile文件
然后打开CMake GUI工具,设置GLFW源代码和编译构建目录,如下图所示(根据自己的源代码目录相应设置):
Configure
鼠标双击【Configure】按钮后,会弹出如下的选择
选择生成工程项目的IDE

可以看到,上述生成器可以选择VS2026、VS2022、VS2019、VS2017、VS2015、MinGW Makefiles等,可以根据需要选择自己想要的Visual Studio版本,这里我选择VS2026即可,鼠标点击右下角的【Finish】按钮,
接着可以看到在build编译目录多出了一些文件夹和文件,如下图所示:
设置CMAKE_INSTALL_PREFIX安装目录
需要基于上述图片中,将CMAKE_INSTALL_PREFIX目录从默认的C:/Program Files (x86)/GLFW目录改成自己的库安装目录,比如D:/env/glfw,如下图所示:
如果将CMAKE_INSTALL_PREFIX安装目录写成了D:\env\glfw,即Windows 风格的反斜杠路径(例如 D:\env\glfw),CMake 在解析双引号字符串时把 \e 当作无效的转义,导致在构建 INSTALL 目标时通过 MSBuild 调用 cmake -P cmake_install.cmake 报错(Invalid character escape ‘\e’)。如下图所示:
Generate
然后鼠标点击【Generate】按钮,如下图所示:
接着E:\projects\GithubProjects\OpenGL\glfw\build编译目录下生成了GLFW.slnx、INSTALL.vcxproj、ALL_BUILD.vcxproj、ZERO_CHECK.vcproj、uninstall.vcxproj等相关VS工程文件,如下图所示:
由于我的Windows11电脑上同时安装了VS2026、VS2022、VS2019、VS2017,
3.使用VS2026打开GLFW项目
之前选择了VS2026,所以得相应使用VS2026打开上图的GLFW.slnx文件,如下图所示:
默认平台是Debug和x64,我们右键选择解决方案,编译构建生成可执行程序即可。
可以看到``目录下多出了以下文件,主要是生成了glfw3.lib和一些二进制文件,如下图所示:
其中glfw3.lib静态库生成目录在glfw\build\src\Debug目录下,如下图所示:
E:\projects\GithubProjects\OpenGL\glfw\build\examples\Debug下会生成一些实例程序,如下图所示:
这些examples示例项目可以鼠标双击运行,例如boing.exe运行截图如下图所示:
E:\projects\GithubProjects\OpenGL\glfw\build\tests\Debug这个目录下生成了以下测试程序,如下图所示:
例如鼠标双击cursor.exe,结果如下图所示:
4.执行INSTALL项目安装GLFW库到指定目录
我们在CMake GUI工具中设置了CMAKE_INSTALL_PREFIX安装目录,此时可以在VS2026中选择INSTALL项目,鼠标右键将其设置为启动项目,然后编译生成即可。
从上图可以看出,GFLW相关的include头文件和gflw.lib库文件安装到了D:/env/glfw目录下,如下图所示:


至此完成了VS2026和CMake 4.2.1编译构建GLFW源代码,生成了头文件和glfw3.lib静态库文件。
至于为什么没有生成glfw3.dll动态库文件,是因为CMake工具在编译GLFW库时,BUILD_SHARED_LIBS选项默认是不勾选的,如果需要生成glfw3.dll动态库,则需要勾选上。
glfw3.pc文件
glfw3.pc文件路径为:D:\env\glfw\lib\pkgconfig,其内容如下:
prefix=D:/env/glfw
exec_prefix=${prefix}
includedir=D:/env/glfw/include
libdir=D:/env/glfw/lib
Name: GLFW
Description: A multi-platform library for OpenGL, window and input
Version: 3.5.0
URL: https://www.glfw.org/
Requires.private:
Libs: -L${libdir} -lglfw3dll
Libs.private: -lgdi32
Cflags: -I${includedir}
关于glfw动态库生成选项-BUILD_SHARED_LIBS
如果我们需要生成glfw动态库,则需要在CMake GUI工具中启用【BUILD_SHARED_LIBS】选项,默认不勾选,如下图所示:
5.勾选BUILD_SHARED_LIBS,重新编译构建生成glfw动态库
为了生成glfw动态库,可以勾选BUILD_SHARED_LIBS,重新执行之前的【Configure】-> 【Generate】-> 【Open Project】这三步即可,最后在重新使用VS2026打开编译,然后再执行INSTALL项目即可。


这次多出了一个bin目录,bin目录下有glfw3.dll动态库文件,如下图所示:
另外,细心一点,可以发现D:\env\glfw\lib目录下,相对于不勾选【BUILD_SHARED_LIBS】多出了一个glfw3dll.lib文件,如下图所示:
四.GLFW Windows预编译库
如果只需要使用GLFW库,也可以不自己编译GLFW源代码,直接使用GLFW官方提供的Visual Studio版本即可。
GLFW官网提供了编译好的Windows和MacOS预编译库,至于Linux发行版如Redhat、Ubuntu等则需要自己手动从源代码编译适合自己的平台,如下图所示:
- https://github.com/glfw/glfw/releases/download/3.4/glfw-3.4.bin.WIN64.zip
- https://github.com/glfw/glfw/releases/download/3.4/glfw-3.4.bin.WIN32.zip
glfw-3.4.bin.WIN64.zip 解压后目录结构如下:


从上图可以看到GLFW官网提供了GLFW include头文件和基于minigw-64、static-ucrt、vc2013、vc2015、vc2017、vc2019、vc2022等的静态库和动态库
glfw-3.4.bin.WIN32.zip 解压后目录结构如下:


可以根据自己Windows上所使用的编译构建环境,如vs2022、vs2019、minigw编译器选择自己需要的静态库或者动态库,用于构建自己的GLFW项目。
五.相关参考资料
- glfw官网
- https://www.glfw.org/download.html
- GLFW 3.4源代码下载
- https://www.glfw.org/docs/latest/quick_guide.html
- GLFW Introduction
- https://github.com/glfw/glfw
- https://github.com/glfw/glfw/releases/download/3.4/glfw-3.4.bin.WIN64.zip
- https://github.com/glfw/glfw/releases/download/3.4/glfw-3.4.bin.WIN32.zip
- 从源码编译学习:GLFW图形窗口管理库
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)