我有一个 cmake 构建,其中我正在搜索一堆依赖项,即我有很多实例:
FIND_PACKAGE(SomePackage)
if(SOMEPACKAGE_FOUND)
include_directories(${SOMEPACKAGE_INCLUDE_DIR})
link_libraries(${SOMEPACKAGE_LIBRARIES})
endif(SOMEPACKAGE_FOUND)
现在,我想添加一个自定义命令来构建预编译头文件,但要做到这一点,我需要知道我添加的所有路径include_directories
来电。如何获取这些目录的列表(最好使用正确的 -I/path/to/directory 格式),以便将它们添加到我的自定义命令中?
您可以使用 get_property 命令来检索目录属性的值INCLUDE_DIRECTORIES
像这样的事情:
get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
foreach(dir ${dirs})
message(STATUS "dir='${dir}'")
endforeach()
此目录属性的值仅跟踪先前在同一 CMakeLists 文件中出现的 include_directories 命令,或者从父 CMakeLists 文件中先前出现的命令继承的命令。如果您的 find_package 和 include_directories 命令分散在许多子目录中,这将成为一个具有挑战性的问题。
如果达到这一点,您可以考虑使用自己的函数或宏覆盖 include_directories 命令,并自己跟踪传递给它的值。或者,只需将它们与每次调用 include_directories 一起累积在全局属性或内部缓存变量中。
请参阅此处的文档:
https://cmake.org/cmake/help/latest/command/get_property.html
https://cmake.org/cmake/help/latest/prop_dir/INCLUDE_DIRECTORIES.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)