可以在目录 CMake 中使用整个项目的导入
Posted
技术标签:
【中文标题】可以在目录 CMake 中使用整个项目的导入【英文标题】:Make it possible to use imports of the whole project in the catalog CMake 【发布时间】:2021-06-25 11:32:11 【问题描述】:我想用imgui做一个小应用
为了运行测试窗口,我使用了 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)
【问题讨论】:
无关:不要使用“裸”link_libraries
或 include_directories
。始终使用target_*
表单来明确哪个目标看到什么。
【参考方案1】:
您需要告诉 CMake 将 imgui-gl
与 imgui::imgui
目标链接,以便它也知道在哪里可以找到 imgui.h:
target_link_libraries(imgui-gl PUBLIC imgui::imgui)
作为现代 CMake 最佳实践,您可能还希望将其包含目录作为界面的一部分:
target_include_directories(imgui-gl PUBLIC "$LIB_FOLDER/imgui_gl")
这些语句共同确保链接到imgui-gl
的任何目标都能看到正确的标头并知道要链接到什么。
【讨论】:
谢谢!你帮了我很多!以上是关于可以在目录 CMake 中使用整个项目的导入的主要内容,如果未能解决你的问题,请参考以下文章