You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CMake中链接GLFW与Dear ImGui,解决GLFW头文件找不到报错

CMake配置修复方案

错误根源

编译imgui目标时找不到GLFW头文件,是因为你仅将GLFW的头文件路径配置为了主项目LearnOpenGL的PRIVATE属性,该属性不会将路径传递给其他独立库目标。imgui作为单独编译的静态库,自身的包含路径仅配置了imgui源码目录,无法访问GLFW、glad的头文件。

修改方法

直接替换原CMakeLists.txt中的ImGUI配置段即可:

# ImGUI
set(IMGUI_DIR "${LIB_DIR}/imgui")

add_library("imgui" 
    "${IMGUI_DIR}/imgui.cpp"
    "${IMGUI_DIR}/imgui_demo.cpp"
    "${IMGUI_DIR}/imgui_draw.cpp"
    "${IMGUI_DIR}/imgui_tables.cpp"
    "${IMGUI_DIR}/imgui_widgets.cpp"
    "${IMGUI_DIR}/imgui_impl_glfw.cpp"
    "${IMGUI_DIR}/imgui_impl_opengl3.cpp"
)

# 配置imgui的包含路径:PUBLIC属性会将imgui自身路径传递给链接它的主项目
target_include_directories(imgui 
    PUBLIC "${IMGUI_DIR}"
    PRIVATE "${GLFW_DIR}/include"
    PRIVATE "${GLAD_DIR}/include"
)

# 匹配主项目的GLFW编译定义,避免重复加载OpenGL头
target_compile_definitions(imgui PRIVATE "GLFW_INCLUDE_NONE")

# 给imgui链接GLFW和glad依赖
target_link_libraries(imgui PRIVATE glfw glad)

# 主项目仅需链接imgui即可,无需再单独配置imgui的包含路径
target_link_libraries(${PROJECT_NAME} PRIVATE imgui "${CMAKE_DL_LIBS}")

修改后删除原配置中给主项目添加imgui包含路径的冗余语句即可正常编译。

内容的提问来源于stack exchange,提问作者Erik Tellier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 06:45:04