cmake 安装目标中的编译时通配符

2023-12-10

我是 cmake 的新手,我发现它非常令人沮丧。我试图在构建运行时而不是生成构建时评估的文件路径中使用通配符。

我创建了一个使用 SWIG 为某些 C++ 代码生成 Java 包装器的构建。我可以编写命令来生成本机代码、对其进行编译并生成工作共享库,甚至使用 INSTALL 命令来正确安装该共享库。我不知道该怎么做是编写一个 INSTALL 命令,该命令可以将 SWIG 生成的所有 *.java 文件复制到同一安装位置。

似乎 cmake 的 FILE GLOB 命令在执行 cmake 时进行通配,而不是在构建实际运行时进行。当然,当cmake执行时,SWIG还没有运行,Java文件还不存在。

有办法做我想做的事吗?我做错事了吗?看起来这是 Makefile 需要做的事情的一个基本部分,我真的很惊讶没有找到一种简单的方法来做到这一点。


假设 Java 包装器位于当前二进制目录中,您可以使用以下命令install安装时复制 Java 文件的命令:

install(
    CODE "file( GLOB _GeneratedJavaSources \"${CMAKE_CURRENT_BINARY_DIR}/*.java\" )"
    CODE "file( INSTALL \${_GeneratedJavaSources} DESTINATION \"$ENV{HOME}\" )"
)

The CODE的形式install命令用于在运行安装目标时执行两个 CMake 命令。第一个将所有生成的 Java 文件收集在辅助变量中。第二个使用的是INSTALL的形式file命令复制文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cmake 安装目标中的编译时通配符 的相关文章

  • fbtorch:cmake 找不到 torch 目录

    我正在尝试构建并安装 fbtorch 但是当我使用 cmake 时出现以下错误 CMake Error at CMakeLists txt 9 FIND PACKAGE By not providing FindTorch cmake in
  • 在cmake中检测项目语言

    我想检测当前的项目语言 例如 如果我有这样的东西 cmake minimum required VERSION 3 0 project foo VERSION 1 0 LANGUAGES CXX 我需要这样的东西 if project la
  • CMake:将为 lib 构建的对象文件重用到另一个 lib 目标中

    我正在尝试将我的项目转移到CMake 同时对编译过程进行一些优化 这是交易 我有几个子目录 必须 每个子目录都编译成静态库 这有效 我想将每个子目录中的所有目标文件收集到另一个更大的 完整的静态库中 它看起来像这样 libBig a mad
  • 设置 CMake OBJECT 库的输出目录

    在我的 CMake 文件中 我指定了一个对象库 add library core OBJECT sourcefiles 我在共享库中进一步引用了这组目标文件 add library sharedlib SHARED
  • cmake MSYS Makefiles 生成器丢失

    我通过 pacman 安装了 cmake 3 2 3 当我尝试从 msys64 shell 中使用它时出现错误 cmake G MSYS Makefiles CMake Error Could not create named genera
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • target_link_libraries 和 INCLUDE_DIRECTORIES 属性

    在这个片段中 cmake minimum required VERSION 3 0 project hello LANGUAGES C VERSION 0 0 1 add library a INTERFACE target include
  • 使用 cmake 处理头文件依赖关系

    我正在一个小型 C 项目上使用 CMake 到目前为止 它运行得很好 有一点点 x 当我更改头文件时 通常需要重新编译许多源文件 直接或间接包含它的文件 但是 cmake 似乎只检测到some的源文件被重新编译 导致损坏状态 我可以通过清除
  • MinGW Make 抛出“系统找不到指定的路径。”错误

    我正在尝试在 Windows 7 上使用 cmake 生成一个 c 项目 在实际创建项目之前 cmake 会对您的工具链进行快速测试 我正在使用 MinGW 这就是我的问题所在 Cmake 触发 make 构建 最终失败并返回 系统找不到指
  • 有没有办法在 CMake 配置中禁止“实验性”C++17?

    我在 CMakeLists txt 中设置了以下内容 set CMAKE CXX STANDARD 17 set CMAKE CXX STANDARD REQUIRED ON set CMAKE CXX EXTENSIONS OFF 然而
  • 如何从 CMake 构建目标仅生成目标文件 (*.o)?

    我正在尝试使用 CMake 构建一个对象文件 但我似乎无法让 CMake 构建除完整可执行文件之外的其他内容 我基本上是在寻找以下编译的结果 结果将加载到 VxWorks 目标上并然后链接 CC CFLAGS INC DIRS c src
  • CMake“项目”指令的正确用法是什么

    我有一个很大的代码库 它构建了几十个库和几个可执行文件 代码库按层次结构进行分解 并且几乎在每个级别都构建了库 我已经仔细检查并在每个目录中放置了一个 CMakeLists txt 文件来构建每个库 在每个 CMakeLists txt 中
  • 用于区分调试和发布版本的 CMake 变量或属性

    我想为调试和发布版本设置不同的 CMake 变量 我尝试像这样使用 CMAKE CFG INTDIR IF CMAKE CFG INTDIR STREQUAL Debug SET TESTRUNNER DllPlugInTesterd dl
  • Haskell 项目可以使用 cmake 吗?

    我正在计划一个用 Haskell 编写的项目 也许也有一些部分是用 C 编写的 对于构建系统 我决定不选择 Haskell 程序 cabal 的常见选择 主要是因为我想了解其他语言的构建程序是如何工作的 我听说过 CMake 我认为这是一个
  • 在cmake中,什么是“项目”?

    这个问题是关于project命令 推而广之 是什么concept of a project意思是cmake中的 我真的不明白什么是project是 以及它与target 我想我确实理解 我看了一下cmake 文档project http w
  • 如何通过 Cmake 查找 iOS/mac OS X 框架

    Context 我通过此将 Boost C 库打包到一个框架 适用于 iOS 中script https github com davidandreoletti boostoniphone generic 该脚本产生boost框架 当链接到
  • 如何使用 --build 选项查看 cmake 发出的命令

    当我运行 cmake build target INSTALL 命令时 如何查看发出的命令 似乎没有像 versbose之类的选项 cmake 帮助说 cmake build 是底层构建工具的接口 但没有说明有关发出的命令转储的任何内容 我
  • cmake 找不到 Qt4

    由于4 8 0已经发布 我重新安装了Qt 现在我也想使用cmake 为了使 cmake 工作 我记得必须添加 mingw bin 文件夹 QtSDK Desktop Qt 4 7 3 到Qt4 7 3中的PATH 所以我猜测在中会有一个类似
  • 在 Ubuntu 16.04 上编译 PCL 1.7,CMake 生成的 Makefile 中出现错误

    我正在尝试让 PCL 1 7 点云库 而不是其他 pcl 在 Ubuntu 16 04 上运行 我最终希望用于 C 的东西 但现在我只是想让这些例子工作 我使用的是 Ubuntu GNU 5 3 1 附带的默认编译器和 Cmake 版本 3
  • 如何判断给定目标是库还是可执行文件?

    内置功能install TARGETS 将库目标安装到可执行目标之外的其他位置 我想做类似的事情 给定目标名称列表 我想将其中的所有库目标添加到列表变量中 并将所有运行时目标添加到另一个变量中 我找不到 CMake 的默认目标属性列表 但我

随机推荐

  • 最新的 BitTorrent DHT 实施建议是什么?

    我正在努力实现另一个 BitTorrent 客户端 目前正在与 DHT 作斗争 是按照这个规范来实现的http www bittorrent org beps bep 0005 html但开始调试它时 我注意到网络上其他节点的响应有所不同
  • ZF 包含路径

    require once 是否正确 你会在哪里以及如何放置它包含路径 它不应该在 application ini 或 bootstrap 中吗 例子 require once Zend View Helper Abstract php qu
  • C++ std::map 键排序比较函数?

    我有一个类 其中重载了所有比较运算符 我将一堆这些对象作为键加载到地图中 并且我希望地图对它们进行从最小到最大的排序 然而 地图实际上是按从大到小排序的 为什么是这样 当它对映射进行排序时 它是否不使用键上的比较运算符 我怎样才能让它做到这
  • Java/Spring 异步处理 Spring 批处理作业请求

    目前 我在应用程序中公开了一个启动 Spring 批处理作业的休息端点 但是 请求不是异步安排的 作业完成后提供响应 并显示批处理状态MyResponse object RestController RequestMapping test
  • 如何检查 TextView 字符串是否已被修剪(选取框)?

    If a TextView其父元素中没有足够的空间 我将显示一个图标 该文本或图标上的选项卡将用于调用包含完整字符串的警报对话框 所以我需要知道是否TextView已被修剪 计算TextView的宽度并计算将在textview中显示的文本的
  • 使弹性项目换行以创建新列

    我正在 div 中填充元素 并且我想对它们进行排列 如下所示 1 3 2 4 现在 它只是在下降 1 2 3 4 我如何告诉它在 2 个元素之后移动到下一列 parent display flex flex direction column
  • 如何将 hbase 表转储到文本文件中?

    我需要转储 HBase 中的一张表并需要采用文本文件 csv 格式 我寻找scan export and get在 HBase shell 中执行命令 但不起作用 有很多方法可以从 HBase 表中获取数据 例如运行导出映射 归约作业 您可
  • 如何使 VK_LAYER_KHRONOS_validation 可用?

    解决方案 卸载 vulkan 在注册表 HKLM SOFTWARE Khronos Vulkan ExplicitLayers 和 HKLM SOFTWARE WOW6432Node Khronos Vulkan ExplicitLayer
  • 用于创建 Lambda 的 AWS Java SDK 版本

    我正在尝试按照所述指南开发 AWS Java lambda 函数here其中描述了RequestHandler接口 还引用 AWS lambda java core 库 不过 我正在尝试按照推荐使用最新的 SDKhere但这是完全不同的Re
  • 什么样的内存语义控制 C# 中的数组分配?

    鉴于以下情况 字节 数据 和一个声明为的函数私有字节 构造命令 如果我要分配的结果构造命令 to sDatasData 是否只是指向从函数返回的内容 或者是否会在内存中为 sData 分配一些空间 并将函数结果的内容复制到其中 该赋值将简单
  • 从 json 中解组嵌套对象

    我有传入的 JSON 字符串 需要解组为 JAXB 带注释的对象 我正在使用抛弃来做到这一点 JSON 字符串如下所示 objectA propertyOne some val propertyTwo some other val obje
  • 如何调试 Google Apps 脚本(又名 Logger.log 记录到哪里?)

    在Google表格中 您可以添加一些脚本功能 我正在添加一些东西onEdit事件 但我不知道它是否有效 据我所知 您无法从 Google Sheets 调试实时事件 因此您必须从调试器执行此操作 这是毫无意义的 因为事件参数传递给了我的on
  • Java Eclipse IDE 出现“未找到模块 javafx.controls”错误

    我正在使用带有 Java 的 Eclipse IDE 2020 03 版本 我正在尝试使用 FXML 在线检查了一些教程和步骤并遵循它们 但我仍然收到以下错误 boot层初始化时出错 java lang module FindExcepti
  • jQuery-mobile 和 ASP.NET 组合问题

    我正在开发一个结合 jQuery mobile 和 asp net 网络表单 为了使我的 asp net 控件的回发正常工作 我必须禁用 ajax 页面顶部 如下所示 但是当像这样禁用ajax时 其他功能似乎不起作用 我无法从 jQuery
  • 获取 JavaScript 正则表达式中每个捕获的索引

    我想匹配正则表达式 例如 a b c d with aabccde 并获取以下信息 a at index 0 b at index 2 cc at index 3 我怎样才能做到这一点 String match 返回匹配列表和完整匹配开始的
  • 如何减少pyinstaller中的exe文件大小

    我正在尝试从 python 脚本开发 exe 文件 但其大小超过 715MB 即使我使用虚拟环境进行开发 但大小仍然很大 我在脚本中使用的这些库 import numpy as np import pandas as pd import o
  • VoIP 通知证书主题必须以“.voip”结尾,设备令牌应用程序包以“.voip”结尾

    我在 twilio 中遇到错误 说 VoIP 通知证书主题必须以 voip 结尾 设备令牌应用程序包以 voip 结尾 当我检查类似的问题时发现解决方案是更改 解决方案是 BundleID voip 我尝试在developer apple中
  • 在 Windows 中的 Android 中通过代理启用 Internet 连接

    如何在 Windows 中通过 Android 代理启用互联网连接 http www coderanch com t 462906 Android Mobile connect internet behind proxy 在早期版本的 An
  • Python:请求会话登录 Cookie

    我的目的是登录网站 然后从 python 脚本访问受保护的图像 我可以通过浏览器进行合法和工作访问 这就是我现在所拥有的 import requests s requests Session s get domain r login s p
  • cmake 安装目标中的编译时通配符

    我是 cmake 的新手 我发现它非常令人沮丧 我试图在构建运行时而不是生成构建时评估的文件路径中使用通配符 我创建了一个使用 SWIG 为某些 C 代码生成 Java 包装器的构建 我可以编写命令来生成本机代码 对其进行编译并生成工作共享