可以在目录 CMake 中使用整个项目的导入
Make it possible to use imports of the whole project in the catalog CMake
我想用imgui做一个小应用
为了运行测试window我用的是opengl glfw后端
问题是我项目的lib/imgui_gl目录下的文件无法访问项目根目录下的文件可以访问的头文件
这是我的 CmakeList 文件的样子
cmake_minimum_required(VERSION 3.17)
project(boardserver)
set(CMAKE_CXX_STANDARD 20)
set(LIB_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/lib) # Lib folder
add_executable(boardserver main.cpp)
find_package(imgui CONFIG REQUIRED)
find_package(GLEW REQUIRED)
find_package(OpenGL REQUIRED)
find_package(SDL2 REQUIRED)
find_package(glfw3 REQUIRED)
## Imgui opengl glfw backend lib
set(imgui-gl_Includes "${LIB_FOLDER}/imgui_gl/")
add_library(imgui-gl STATIC
${LIB_FOLDER}/imgui_gl/imgui_impl_glfw.cpp ${LIB_FOLDER}/imgui_gl/imgui_impl_opengl3.cpp )
include_directories(${imgui-gl_Includes})
target_link_libraries(boardserver PRIVATE imgui::imgui GLEW::GLEW OpenGL::GL SDL2::SDL2 glfw imgui-gl)
您需要使用 imgui::imgui
目标告诉 CMake link imgui-gl
,这样它也知道在哪里可以找到 imgui.h:
target_link_libraries(imgui-gl PUBLIC imgui::imgui)
作为现代 CMake 最佳实践,您可能还希望将其包含目录作为界面的一部分:
target_include_directories(imgui-gl PUBLIC "${LIB_FOLDER}/imgui_gl")
这些语句共同确保 link 到 imgui-gl
的任何目标都能看到正确的 headers 并且知道要 link 到什么。
我想用imgui做一个小应用
为了运行测试window我用的是opengl glfw后端
问题是我项目的lib/imgui_gl目录下的文件无法访问项目根目录下的文件可以访问的头文件
这是我的 CmakeList 文件的样子
cmake_minimum_required(VERSION 3.17)
project(boardserver)
set(CMAKE_CXX_STANDARD 20)
set(LIB_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/lib) # Lib folder
add_executable(boardserver main.cpp)
find_package(imgui CONFIG REQUIRED)
find_package(GLEW REQUIRED)
find_package(OpenGL REQUIRED)
find_package(SDL2 REQUIRED)
find_package(glfw3 REQUIRED)
## Imgui opengl glfw backend lib
set(imgui-gl_Includes "${LIB_FOLDER}/imgui_gl/")
add_library(imgui-gl STATIC
${LIB_FOLDER}/imgui_gl/imgui_impl_glfw.cpp ${LIB_FOLDER}/imgui_gl/imgui_impl_opengl3.cpp )
include_directories(${imgui-gl_Includes})
target_link_libraries(boardserver PRIVATE imgui::imgui GLEW::GLEW OpenGL::GL SDL2::SDL2 glfw imgui-gl)
您需要使用 imgui::imgui
目标告诉 CMake link imgui-gl
,这样它也知道在哪里可以找到 imgui.h:
target_link_libraries(imgui-gl PUBLIC imgui::imgui)
作为现代 CMake 最佳实践,您可能还希望将其包含目录作为界面的一部分:
target_include_directories(imgui-gl PUBLIC "${LIB_FOLDER}/imgui_gl")
这些语句共同确保 link 到 imgui-gl
的任何目标都能看到正确的 headers 并且知道要 link 到什么。