在 CMake 中列出 include_directories

2023-12-02

我有一个 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(使用前将#替换为@)

在 CMake 中列出 include_directories 的相关文章

随机推荐

  • 将 SimpleCursorAdapter 与 Spinner 一起使用?

    我有一个数据库 其中表 mytable 有 2 列 id sampletext 我想查询示例文本的不同值并使用 SimpleCursorAdapter 提供给 Spinner 这是尝试过的 String cols new String sa
  • 找不到 SQL Server 配置管理器

    安装SQL Server 2008后 我找不到SQL Server Configuration Manager in Start SQL Server 2008 Configuration Tools menu 我应该做什么来安装这个工具
  • 不可为空类型 'System.DateTime' ,ASP.NET MVC

    我有一个注册页面 由于内容问题 我们必须要求并强制申请人提供出生日期 所以按理说这个字段不能为空 我使用 jQuery 在文本框上加水印 告诉他们可以单击它并获取 jQuery UI 日历对象来选择日期 选择日期效果很好 这不是问题 在测试
  • 重写 App.xaml.cs 中的方法值

    我正在开发 Windows 8 Phone 应用程序 我这里有两件事 一个是库项目 另一个是普通应用程序 让我首先解释一下我的代码 在图书馆项目中 class A public static string empName ABC publi
  • 如何从 .ipa 文件获取源代码? [复制]

    这个问题在这里已经有答案了 可能的重复 是否可以对我的 iPhone 应用程序进行逆向工程 我正在为客户构建一个应用程序 并希望向他发送我创建的每个构建的 ipa 文件 以便他可以使用该应用程序 然而 在他付钱给我之前 我不希望他能够访问源
  • 如何将SwingWorker的publish委托给其他方法

    我的 问题 可以用以下方式描述 假设我们有一个密集的进程 我们希望在后台运行并让它更新 Swing JProgress 栏 解决方案很简单 import java util List import javax swing JOptionPa
  • 在 Mac OSX 上使用 MAMP 时,如何让 CakePHP Baker 找到 mysql.sock 并识别 MySQL?

    我目前正在阅读 David Golding 的 Beginning CakePHP From Novice to Professional 在某一时刻 我必须使用 CLI 命令 蛋糕烘焙 我会看到欢迎屏幕 但当我尝试烘焙时 例如 控制器我收
  • c++ 11 mersenne_twister_engine 类的问题

    我一直在尝试使用 c 11 mersenne twister engine 类 http www cplusplus com reference random mersenne twister engine 生成区间 0 1 中的数字 但是
  • create-react-app 自版本 4.0.1 起不再工作

    我尝试安装create react app using npm i create react app npx create react app new app and npm init react app new app 但我不断收到此错误
  • 如何使用甲骨文钱包

    我正在尝试将密码存储在 Oracle Wallet 文件中 我将从代码中检索并使用该文件 我尝试创建一个钱包并在那里保存凭证 mkstore wrl
  • “OPEN_URI”的菜单项不存在于菜单项返回中

    我有一张卡片正在通过镜像 API 插入到我的时间线中 该卡有 3 个选项 扫描 回复 删除 预期 gt 条码测试 扫描 回复 删除 已收到 gt 条码测试 回复 删除 回复和删除选项仅在菜单项上返回 如果我将 OPEN URI 更改为 CU
  • 替换列中匹配的值

    我是 R 编程新手 我一直停留在下面的示例上 基本上我有两个数据集 数据集1 ID Category 1 CatZZ 2 CatVV 3 CatAA 4 CatQQ 数据集2 ID Category 1 Cat600 3 Cat611 我试
  • Unity中如何减少VR游戏的延迟

    我一直在使用 Unity3d 构建 VR 游戏 它只有低多边形模型 文件大小小于 40 mb 但在移动设备上玩游戏时仍然滞后 请建议如何提高性能 先感谢您 为了提高移动 VR 的性能 您必须尽可能优化一切 您应该牢记以下一些变量 图形方面
  • Django 自引用外键

    一般来说 我对网络应用程序和数据库的东西比较陌生 所以这可能是一个愚蠢的问题 我想创建一个模型 CategoryModel 其中的字段指向模型的另一个实例 其父级 的主 ID class CategoryModel models Model
  • 用下划线替换文件名中的括号和空格

    我用这一行删除文件夹名称上的空格 find tmp depth name execdir rename s g 有没有办法从文件名中删除空格和括号并添加下划线 例如 我有 a dir 1 file with spaces and paren
  • XSLT:从 xsd 获取枚举

    我在 xsd 文件中有这个枚举
  • 什么是 Unix 时间戳以及为什么使用它?

    什么是 Unix 时间戳 在 PHP 中 当处理日期时 该函数strtotime 输出一些整数值 那是什么 我试图了解这一点 但我无法得到满意的答案 特别是为什么我们需要使用转换日期strtotime 什么是 Unix 时间戳 简而言之 U
  • 使用 CSOM 对 Sharepoint Online 进行身份验证

    我觉得我在这里错过了一些东西 我尝试通过 C 控制台应用程序登录 SPO 租户 但收到错误 无法联系网站 https xxx sharepoint com 或者网站不支持 SharePoint Online 凭据 响应状态代码为 未经授权
  • 未声明的标识符 - 不确定为什么

    我刚学C 我写了以下内容 void main void unsigned int curr dat 0 The current dat file to use unsigned char ch 0 Key entered at keyboa
  • 在 CMake 中列出 include_directories

    我有一个 cmake 构建 其中我正在搜索一堆依赖项 即我有很多实例 FIND PACKAGE SomePackage if SOMEPACKAGE FOUND include directories SOMEPACKAGE INCLUDE