如何将所有3rdparty运行时依赖项包含在linux上的cmake / cpack生成的包中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将所有3rdparty运行时依赖项包含在linux上的cmake / cpack生成的包中?相关的知识,希望对你有一定的参考价值。

我有一个c ++项目,其中包含一些使用cmake设置的可执行文件。通常的工作流程是通过包管理器安装所有3rdparty依赖项,通过cpack在同一台机器上构建和安装包。现在,我想在该包中包含所有运行时依赖项,以便能够在另一台机器上安装它,而无需在构建机器上安装第三方依赖项。

我在网上做了很多研究 - 没有太大的成功。我为cmake找到了一个名为BundleUtilities的东西,但找不到任何关于它的入门友好文档。我甚至不知道它是否符合我的需要。

我想使用cmake的好处并生成这样的“捆绑”包,无需任何人工干预或任何事情。我不想手动组装和复制第三方依赖项。对于这个问题,理想的是干净的cmake / cpack解决方案。

编辑:

澄清:有问题的目标机器没有互联网连接。

答案

你真的确定要这么做吗?它可能不会是一个好主意......打包第三方工具实际上是对第三方软件负责,并且因为上游版本不可避免地超出人们在你的tarball中找到的可以变成真实的东西头痛。考虑您是否真的可以看到版本冲突,因为您的依赖项已安装。

为什么不在配置时让cmake调用系统的包管理器? exec_process()命令将为您运行控制台命令。

以上是关于如何将所有3rdparty运行时依赖项包含在linux上的cmake / cpack生成的包中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将通过 npm 安装的所有依赖项保存到我的 package.json 文件中?

如何在 CMake 中构建过程后复制目标的所有运行时依赖项?

Gradle:获取传递依赖项并导出到最小的运行时 fat jar

使 Maven 将依赖项复制到 target/lib

如何将具有文件外依赖项的 sklearn 模型保存到磁盘?

maven会在啥时候更新所有jar