Windows系统VSCode MinGW环境下如何编译ImGui并集成到OpenGL项目?
适配ImGui的修改方案
一、修改现有Makefile
1. 调整后的完整Makefile内容
CXX = g++ Flags = -std=c++17 -Wall -Wformat -DIMGUI_IMPL_OPENGL_LOADER_GLEW Libs = -lGL -lGLEW -lglfw -ldl OBJDIR = obj # 新增ImGui核心源码与绑定源码 ImGuiFiles = src/vendor/imgui/imgui.cpp src/vendor/imgui/imgui_draw.cpp src/vendor/imgui/imgui_tables.cpp src/vendor/imgui/imgui_widgets.cpp src/vendor/imgui/imgui_impl_glfw.cpp src/vendor/imgui/imgui_impl_opengl3.cpp Filez = src/Rendering/*.cpp src/Core/*.cpp $(ImGuiFiles) Includes = -Isrc/PCH/ -Isrc/ -Iinclude/ -Isrc/Rendering/Buffers/ -Isrc/Core/ -Isrc/Rendering/ -Isrc/vendor/imgui -Isrc/FileManagement/ -Ires/ -Isrc/vendor/glm/ -Isrc/vendor/stb_image -Isrc/vendor/ all: main.cpp $(CXX) $(Flags) $(Includes) $(Filez) main.cpp lib/Buffers.a -o main $(Libs) clean: rm $(OBJDIR)/*.o *.o main.exe
2. 修改说明
- 新增了
-DIMGUI_IMPL_OPENGL_LOADER_GLEW编译宏,匹配你项目用的GLEW OpenGL加载器,避免ImGui的加载器冲突 - 直接把ImGui的核心代码和GLFW、OpenGL3绑定代码加入编译列表,不需要额外提前编译imgui.a静态库,省去单独编译静态库的步骤
- 移除了原编译指令里的
lib/imgui.a,避免重复链接报错 - 新增了clean指令对生成的main.exe的清理
二、VS Code task配置方案
在项目.vscode目录下新建tasks.json文件,填入以下内容即可一键编译运行:
{ "version": "2.0.0", "tasks": [ { "label": "build项目", "type": "shell", "command": "make", "args": [], "group": { "kind": "build", "isDefault": true }, "problemMatcher": [ "$gcc" ] }, { "label": "运行项目", "type": "shell", "command": "./main.exe", "dependsOn": "build项目", "group": { "kind": "test", "isDefault": true } } ] }
配置完成后按Ctrl+Shift+B即可触发默认编译任务,按Ctrl+Shift+P选择运行任务即可找到运行项目的选项。
前置检查项
- 提前将ImGui官方压缩包中
backends目录下的imgui_impl_glfw.h、imgui_impl_glfw.cpp、imgui_impl_opengl3.h、imgui_impl_opengl3.cpp四个文件拷贝到src/vendor/imgui目录下 - 编译前先运行一次
make clean清理旧的编译缓存文件
内容的提问来源于stack exchange,提问作者Electric fox
相关产品推荐
相关产品推荐

