windows编译ImGui(1)

ImGui是一个轻量级的C++图形界面库,它可以用于创建各种交互式的工具和编辑器。具有跨平台、高性能的特点。目前很多游戏引擎和测量软件都有使用他。

ImGUI自身不能创建窗口,需要使用Win32API或glfw或SDL等工具来创建窗口,另外需要使用OpenGL或DirectX、vulkan用于渲染图形等,SDL、OpenGL等均被称为后端(backends)。

目前很多开源项目都是用的这个库进行二次开发,所以进行记录一下。这个库本身不大,代码也不多,但是github上没有提供cmake文件,对于不同的例子有makefile(针对ubuntu系统),在ubuntu系统中可以直接选择相应的后台例子,make查看运行效果。

下面记录用windows+mingw编译过程。
                        
参考链接:https://blog.youkuaiyun.com/m0_46079750/article/details/131366874

1、下载ImGui源码:前往GitHub下载https://github.com/ocornut/imgui

下载完成后,你会看到ImGui的目录结构如下:

imgui/

backends/ 后端文件夹,包含了不同平台和渲染器的实现代码

examples/ 示例文件夹,包含了各种使用ImGui的示例程序

misc/ 杂项文件夹,包含了一些辅助工具和扩展模块

imconfig.h 配置文件,可以用来修改ImGui的一些默认设置

imgui.cpp/imgui.h ImGui的核心源码文件,必须添加到你的项目中

imgui_demo.cpp/imgui_demo.h ImGui的演示源码文件,包含了各种控件和窗口的示例代码

imgui_draw.cpp/imgui_draw.h ImGui的绘制源码文件,负责渲染各种图形元素

imgui_internal.h ImGui的内部头文件,包含了一些高级功能和实现细节

imgui_tables.cpp/imgui_tables.h ImGui的表格源码文件,提供了创建和管理表格的功能

imgui_widgets.cpp/imgui_widgets.h ImGui的控件源码文件,提供了创建和管理各种控件的功能

imstb_rectpack.h/imstb_textedit.h/imstb_truetype.h 第三方库文件,用于矩形打包、文本编辑和字体渲染

2、新建一个自己的项目ImGuiTest,main.cpp 是把\imgui\examples\example_glfw_opengl3中main.cpp拷贝过来。

ImGUITest
├─lib
│  ├─glfw
│  └─imgui
│      │  imconfig.h
│      │  imgui.cpp
│      │  imgui.h
│      │  imgui_demo.cpp
│      │  imgui_draw.cpp
│      │  imgui_internal.h
│      │  imgui_tables.cpp
│      │  imgui_widgets.cpp
│      │  imstb_rectpack.h
│      │  imstb_textedit.h
│      │  imstb_truetype.h
│      │  LICENSE.txt
│      │
│      └─backend
│              imgui_impl_glfw.cpp
│              imgui_impl_glfw.h
│              imgui_impl_opengl3.cpp
│              imgui_impl_opengl3.h
│              imgui_impl_opengl3_loader.h

└─src
        main.cpp

3、然后编写cmakelists.txt

cmake_minimum_required(VERSION 3.10)
project(imguiTest)

set(CMAKE_CXX_STANDARD 11)
set(GLFW3_WINDOWS ${CMAKE_CURRENT_SOURCE_DIR}/lib/GLFW/lib/windows/glfw3.dll)
set(EXECUTABLE ${CMAKE_PROJECT_NAME})

include_directories(lib/GLFW/inc
                    lib/imgui
                    lib/imgui/backends
        )
link_directories(
        lib/GLFW/lib/windows
)

file(GLOB_RECURSE IMGUI_SRCS lib/imgui/*.cpp)

add_executable(${EXECUTABLE} WIN32 src/main.cpp ${IMGUI_SRCS})
target_link_libraries(${EXECUTABLE} ${GLFW3_WINDOWS} -static opengl32)
add_custom_command(TARGET ${EXECUTABLE} POST_BUILD #把dll拷贝到输出目录
        COMMAND ${CMAKE_COMMAND} -E copy
        ${GLFW3_WINDOWS}
        ${CMAKE_BINARY_DIR}/glfw3.dll)

4、用vscode打开代码文件夹,新建终端输入:

cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ .. 

5、输入 mingw32-make

终端输入 ./imguiTest.exe 运行,或者直接双击运行

6、用VScode调试

点击vscode左边调试按钮,新建launch.json文件,选择c++gdb文件,内容如下

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Windows 上的 Bash 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/imguiTest.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/build",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\Program Files\\mingw64_x86_64_win32\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }

    ]
}

主要修改 "program":为自己的exe路径, "miDebuggerPath":为自己的gdb路径。

现在可以断点调试了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值