首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CMake中列出include_directories

在CMake中列出include_directories
EN

Stack Overflow用户
提问于 2011-08-02 01:33:49
回答 2查看 69.2K关注 0票数 67

我有一个cmake构建,我在其中搜索一堆依赖项,即我有许多实例:

代码语言:javascript
复制
FIND_PACKAGE(SomePackage)
if(SOMEPACKAGE_FOUND)
  include_directories(${SOMEPACKAGE_INCLUDE_DIR})
  link_libraries(${SOMEPACKAGE_LIBRARIES})
endif(SOMEPACKAGE_FOUND)

现在,我想要添加一个自定义命令来构建一个预编译头文件,但为此,我需要知道我的include_directories调用添加的所有路径。如何获得这些目录的列表(最好使用正确的-I/path/ to /directory格式),以便将它们添加到我的自定义命令中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-02 05:02:34

可以使用get_property命令检索目录属性INCLUDE_DIRECTORIES的值

如下所示:

代码语言:javascript
复制
get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
foreach(dir ${dirs})
  message(STATUS "dir='${dir}'")
endforeach()

此目录属性的值仅跟踪以前在同一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

票数 116
EN

Stack Overflow用户

发布于 2018-07-05 17:18:19

我们的写入解决方案包括由conan添加到文件中的目录

代码语言:javascript
复制
function(output_conan_include_dirs)
    set(include_dir_str "")
    foreach(DIR ${CONAN_INCLUDE_DIRS})
        set(include_dir_str "${include_dir_str}${DIR}\n")
    endforeach()

    set(pth "${CMAKE_BINARY_DIR}/conan-includes.txt")
    file(WRITE "${pth}" "${include_dir_str}")
    message(STATUS "Conan include directories written to: ${pth}")
endfunction()

output_conan_include_dirs()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6902149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档