我有一个cmake构建,我正在搜索一堆依赖项,即我有很多实例:
FIND_PACKAGE(SomePackage)
if(SOMEPACKAGE_FOUND)
include_directories(${SOMEPACKAGE_INCLUDE_DIR})
link_libraries(${SOMEPACKAGE_LIBRARIES})
endif(SOMEPACKAGE_FOUND)
Run Code Online (Sandbox Code Playgroud)
现在,我想添加一个自定义命令来构建一个预编译的头文件,但要做到这一点,我需要知道我的include_directories调用添加的所有路径.如何获取这些目录的列表(最好使用正确的-I/path/to/directory格式),以便我可以将它们添加到我的自定义命令中?
DLR*_*ave 90
您可以使用get_property命令检索目录属性的值
INCLUDE_DIRECTORIES
像这样的东西:
get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
foreach(dir ${dirs})
message(STATUS "dir='${dir}'")
endforeach()
Run Code Online (Sandbox Code Playgroud)
此目录属性的值只跟踪已在同一CMakeLists文件之前发生,或者已经从先前出现在父CMakeLists文件继承了include_directories命令.如果您的find_package和include_directories命令分散在许多子目录中,这将成为一个具有挑战性的问题.
如果达到这一点,您可以考虑用您自己的函数或宏覆盖include_directories命令,并自己跟踪传递给它的值.或者,只需在每次调用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
| 归档时间: |
|
| 查看次数: |
47078 次 |
| 最近记录: |