在 CMake 中获取包含库的包含路径列表
Posted
技术标签:
【中文标题】在 CMake 中获取包含库的包含路径列表【英文标题】:Getting the list of include paths WITH libraries in CMake 【发布时间】:2020-07-07 07:54:36 【问题描述】:我一直面临 CMake 问题以及如何获取我在 C++ 项目中使用的包含库的路径。
添加的库如:
find_package(SDL2 CONFIG REQUIRED)
find_package(glm CONFIG REQUIRED)
我尝试查询以下内容但没有成功
get_property(dirlist DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
get_target_property(test projname INCLUDE_DIRECTORIES)
因为它只返回我使用 include_directories() 添加的内容,而不是库本身。
有什么解决办法吗?
【问题讨论】:
【参考方案1】:如果 CMake 找到包,SDL2_INCLUDE_DIRS
、GLM_INCLUDE_DIR
包含包含文件的路径。
message("SDL2_INCLUDE_DIRS: " $SDL2_INCLUDE_DIRS)
message("GLM_INCLUDE_DIR : " $GLM_INCLUDE_DIR)
【讨论】:
CMake 找到包,但 SDL2_INCLUDE_DIR/SDL2_INCLUDE_DIRS 为空。我唯一能得到的是 SDL2_DIR 但它也不正确。 GLM 也一样。最好有一个解决方案,列出构建时使用的包含标志/导出时留在 compile_commands.json 中的包含标志。 你可以在做 cmake .. 之后用 ccmake 检查路径 .. 目标是在 CMake 文件中自动将其导出到文件中 我的意思是你可以看到为 sdl2、glm libs 设置了哪些变量 SDL2_CONFIG,SDL2_CONSIDERED_CONFIGS,SDL2_CONSIDERED_VERSIONS,SDL2_DIR,SDL2_FOUND,SDL2_VERSION,SDL2_VERSION_COUNT,SDL2_VERSION_MAJOR,SDL2_VERSION_MINOR,SDL2_VERSION_PATCH,SDL2_VERSION_TWEAK其中没有一个是正确的,包括SDL2_DIR不幸的是,与相同的对GLM 跨度>以上是关于在 CMake 中获取包含库的包含路径列表的主要内容,如果未能解决你的问题,请参考以下文章