如何在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
相关产品推荐
相关产品推荐

