在cmake中make install后进行后处理

2024-04-06

我正在尝试在“make install”末尾制作可执行文件的副本

我需要做类似的事情:

cp bin/prog bin/prog1

我已将以下内容添加为 CMakelists.txt 中的最后一行

install (CODE  "execute_process(COMMAND /src/copyExe.sh ${BIN_DIR})")

copyExe.sh 是一个执行复制操作的 bash 脚本。为了达到预期的效果,我需要运行“make install”两次。第一次它抱怨prog不存在,然后将文件复制到bin中。第二次它找到 prog 并能够制作副本。

有没有办法确保我的 copyExe 脚本在文件复制到 bin 后运行?

目录结构

site
    bin
    src
        CMakeLists.txt ( contains add_dir(foo) and install(CODE....))
    foo
        CMakeLists.txt ( contains install( TARGET..... ))

而 CMake文档 https://cmake.org/cmake/help/v3.7/command/install.html for install命令说(关于安装逻辑):

未定义跨目录的顺序。

看起来它倾向于以不同的方式处理安装逻辑子目录按相同顺序 as add_subdirectory() calls.

但是,它处理的安装逻辑install()调用当前目录 在子目录之前.

你可以移动install(CODE)进入某个子目录(例如,fix_binaries),并在末尾添加该子目录CMakeLists.txt in src:

src/fix_binaries/CMakeLists.txt:

install(CODE ...)

src/CMakeLists.txt:

...
add_subdirectory(foo)
...
# After all add_subdirectory() calls
add_subdirectory(fix_binaries)

这种方法适用于我参与的一个项目(相关代码 https://github.com/euspectre/kedr/blob/master/sources/cmake/modules/update_modules.cmake).

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

在cmake中make install后进行后处理 的相关文章

随机推荐

  • RecyclerView 仅在滚动时更新

    我有一个布局RecyclerView使用适配器 public class SimpleRecyclerAdapter extends RecyclerView Adapter
  • 按索引获取 DataGrid 行

    我正在尝试获得DataGridRow从我的DataGrid基于索引 我正在使用以下代码 public DataGridRow GetGridRow int index DataGridRow row DataGridRow DG State
  • Gulpfile.js 加载失败

    Visual Studio 任务运行程序无法加载 gulp 文件 我用VS2017 v15 9 4然而 现在这个项目是几年前开发的 Failed to run Gulpfile js cmd exe c gulp tasks simple
  • 如何为 AVVideoComposition 设置透明背景?

    Update 我为回答这个问题添加了 50 点声誉赏金 我有一个应用程序需要将一些视频和照片放在一起以创建电影 我正在使用 AVMutableComposition 来实现这一点 为了能够指示它如何合成视频 我必须使用 AVMutableV
  • 如何在类中使用静态/辅助方法?

    我正在写一个Fraction类 我正在尝试使用gcd a b 在初始化时Fraction目的 但是 当我尝试这样做时 如果没有Fraction部分Fraction gcd a b 我用了 staticmethod在这里 但它绝对没有任何作用
  • 如何在一个 UITextView (Xcode) 中拥有两种字体?

    我想在一个 UITextView 中制作两种字体样式 我该怎么做 来自类参考 http developer apple com library IOS documentation UIKit Reference UITextView Cla
  • Linux中分配特定地址

    我想在Linux进程中的特定地址分配一块内存 实际上我想做一些类似的事情 我会有进程号 每个进程都会调用库 由我编写 中的初始化函数 该函数将在进程的地址空间中分配一些内存 它将存储进程相关信息 这将由每个进程完成 一旦分配了该内存 程序就
  • YouTube 可以嵌入 Android 应用程序吗? WebOS 或黑莓怎么样?

    是否可以在 Android 操作系统内播放 YouTube 视频而无需启动单独的 YouTube 播放器 WebOS 或黑莓怎么样 在 iPhone 上 我可以使用 WebView 和嵌入的 YouTube 代码来完成此操作 并且我正在权衡
  • 页面刷新时角度“无法获取”路线

    我的 Angular 应用程序中有一个搜索功能 执行时会点击我的 API 来获取结果 然后使用以下命令重定向用户 location url 一切都很好 直到我尝试重新加载结果页面 当我这样做时 我得到一个Cannot GET search
  • 需要文件而不执行代码?

    这里我有两个文件 file rb def method puts This won t be outputted end puts This will be outputted main rb require file 运行 main rb
  • 从 IP 地址获取主机名 iOS 10

    我需要获取主机名 从 IP 地址 我能够获取连接到我的设备网络的所有设备的 IP MAC 地址 但是主机名总是返回 nil 我曾尝试使用下面的代码片段来检索主机名 但它在我的网络中总是返回 nil 代码片段 1 NSString getHo
  • MYSQL - 从大表中的第二行选择数据

    我有一个外部第3方程序将数据库实时导出到mysql 我想显示数据以进行报告 所以 我无法更改结构 因为它是实时同步的 表结构是这样的 ID Date Transaction 12 2012 11 01 200 12 2012 11 02 2
  • Android sdk 中缺少 Cordova gradle 包装器

    我在 windows7 x64 上 安装了今天最新的稳定版本的 android sdk studio 通过 android studio 捆绑包 因为它现在显然是一起发货的 我已经正确配置了环境变量 如您在上面看到的 这是我发出以下命令时得
  • 在 Rails 服务器日志中查看 Resque 日志输出

    我在 Puma 服务器上有一个 Rails 4 应用程序 其中 Resque Resque Scheduler 正在运行后台作业 我想知道的是如何将两个 Resque 工作人员的日志输出合并到我的服务器日志中 或者 这是不可能的 我如何查看
  • 在本地 WiFi 网络上服务 Django 项目

    I used python manage runserver 0 0 0 0 8000 启动服务器 以便我可以从 wifi 网络上的其他计算机访问该项目 但是当我在另一台计算机上浏览到 internet ipaddress 8000 时 该
  • 适用于 iOS 的 Facebook SDK:未显示 FBSDKShareDialog

    我是 iOS 新手 我想分享一个使用 Facebook SDK for iOS 的链接 我的代码如下 IBAction func shareVoucherUsingFacebook sender UIButton print Faceboo
  • CompletableFuture 已完成,但有异常

    CompletableFuture completedFuture https docs oracle com javase 9 docs api java util concurrent CompletableFuture html co
  • 为什么这个 random() 分布看起来不对称?

    编辑 这是使用 Google Chrome 36 我正在摆弄 html5 画布 生成随机分布在立方体内的点并将其投影到 2D 画布上 令人惊讶的是 结果看起来一点也不对称 我怀疑 Javascript 的 Math random 让我失望了
  • 如何让log4j记录到文件并打印到控制台

    我可以将日志发送到控制台 但似乎无法将其发送到日志文件 这是我的properties file log4j rootLogger DEBUG LOG stdout log4j appender stdout org apache log4j
  • 在cmake中make install后进行后处理

    我正在尝试在 make install 末尾制作可执行文件的副本 我需要做类似的事情 cp bin prog bin prog1 我已将以下内容添加为 CMakelists txt 中的最后一行 install CODE execute p