gpt4 book ai didi

cmake - 在 CMake 中列出 include_directories

转载 作者:行者123 更新时间:2023-12-03 05:54:12 25 4
gpt4 key购买 nike

我有一个 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

关于cmake - 在 CMake 中列出 include_directories,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com