在CMake中列出include_directories
我有一个cmake构build,我正在寻找一堆的依赖关系,即我有很多的实例:
FIND_PACKAGE(SomePackage) if(SOMEPACKAGE_FOUND) include_directories(${SOMEPACKAGE_INCLUDE_DIR}) link_libraries(${SOMEPACKAGE_LIBRARIES}) endif(SOMEPACKAGE_FOUND)
现在,我想添加一个自定义命令来构build一个预编译的头文件,但是为了做到这一点,我需要知道我的include_directories
调用添加的所有path。 我怎样才能得到这些目录(最好有适当的-I /path/到/目录格式)的列表,以便我可以将它们添加到我的自定义命令?
您可以使用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文件中先前出现的inheritance的命令。 如果你的find_package和include_directories命令分散在许多子目录中,这成为一个具有挑战性的问题。
如果达到这一点,您可以考虑用自己的函数或macros覆盖include_directories命令,并自己跟踪传递给它的值。 或者,只要将其累积在全局属性或内部cachingvariables旁边,每次调用include_directories。
请参阅这里的文档:
http://cmake.org/cmake/help/v2.8.8/cmake.html#command:get_property
http://cmake.org/cmake/help/v2.8.8/cmake.html#prop_dir:INCLUDE_DIRECTORIES