问题标签 [cpack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
716 浏览

cmake - 为特定目标运行 fixup_bundle (PACKAGE)

我想在运行 CPACK 而不枚举所有外部 dll 时合并外部 dll(通过显式调用 INSTALL(FILE ...) )

使用fixup_bundle可以通过复制所需的库来修复安装文件夹( CMAKE_INSTALL_PREFIX )中的所有可执行文件。

此代码在构建INSTALL目标时执行,并将仅处理文件夹 CMAKE_INSTALL_PREFIX 中存在的元素。

我想做的是在构建由 CPACK 添加的PACKAGE目标期间运行 fixup_bundle 这样生成的安装脚本也将包含外部库。

有没有人设法做到这一点?

0 投票
1 回答
2440 浏览

cmake - 使用 CPACK 自定义 NSIS 安装程序

我正在尝试使用 CMAKE 和 CPACK 自定义 NSIS 安装程序。特别是我想在生成的 project.nsi 中包含一个外部脚本。

就像是:

为此,我遵循此处显示的示例:https ://gitlab.kitware.com/cmake/community/-/wikis/doc/cpack/NSISAdvancedTips

我已经复制了模板脚本文件 (NSIS.template.in) 并添加了所需的命令。我现在需要相应地配置两个变量“@SCRIPT_PATH@ 和 @SCRIPT_NAME@”。

我试图将它们设置为标准 CMAKE 变量

但是模板变量被 CPACK 简单地留空

有什么线索吗?

0 投票
1 回答
194 浏览

macros - CPACK 嵌入文本文件

我想分发一个包含程序二进制文件的 gzipped tarball。制作包含二进制文件和附加脚本/man 文件的包没有问题,因为这些是我在源安装期间使用 CMake INSTALL 命令安装的文件。

虽然对我来说对这种功能的需求似乎很明显,但我没有找到将文本文件包含在 CPack tarball 包中的方法。这是我想获得的最终 tarball 的示例:

任何帮助将不胜感激。

干杯

0 投票
1 回答
868 浏览

cmake - Debian 软件包:用户和组

最近用cmake/cpack制作了一个debian包,制作成功了,但是我在电脑上安装(sudo dpkg -i mypcakge.deb),发现一个问题:安装程序的用户和组是root:root。由于某种原因,我的问题应该在特定的用户/组中运行。我不知道该怎么做,你能帮帮我吗?

另外,我不想在安装包后用 chown(..) 修改用户和组。有没有办法在 CMakeLists 中添加一些东西来做到这一点?

0 投票
2 回答
2248 浏览

deb - CMAKE/CPACK:我想让 deb 在安装后执行一个 bash 脚本,但它不起作用

我用cmake/cpack构建了一个debian包。我希望deb在安装deb后执行一个bash脚本。我安装deb使用sudo dpkg -i my.deb。如果我这样安装deb,安装程序的用户和组是根。所以我希望 deb 自动执行一个 bash 脚本来使用当前登录的用户和组来修改用户和组。

我用谷歌搜索了关于这个的信息。我发现 SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA, ./script/postinst) 可以做到这一点。所以我喜欢这样,但它没有用。

我喜欢这样:

安装(程序 ${CMAKE_SOURCE_DIR}/script/postinst DESTINATION ./script)

设置(CPACK_GENERATOR“DEB”)

设置(CPACK_PACKAGE_NAME“mydeb”)

设置(CPACK_PACKAGE_VERSION“1.0”)

设置(CPACK_DEBIAN_PACKAGE_MAINTAINER “乔治”)

设置(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA,./script/postinst)

设置(CPACK_PACKAGING_INSTALL_PREFIX “usr”)

包括(CPACK)

postinst 是一个 bash 脚本,用于使用当前登录的用户和组修改已安装程序的用户和组

如果有些事情是错的?我需要帮助

0 投票
2 回答
752 浏览

cmake - Cmake/cpack:如何创建一个没有头文件的 libc++ 静态库 deb?

今晚我一直在尝试在 Ubuntu 12.04LTS 64 位机器上为 LLVM libc++ 3.4 创建一个 deb。我想首先创建一个只包含/usr/lib64/libc++.a没有任何标题的 deb。是的,我知道根据Debian 库打包指南,我应该将文件包含在一个*-dev包中,但是对于cmakeandcpack来说,我想逐步实现。

所以,我首先更改libcxx-3.4/lib/CMakeLists.txt并添加了一个 if 检查(见第 14 和 18 行)

然后,在build子目录中,我发出了一个

创建的deb仍然包含所有标题。如果我注释掉第 14 到 18 行,则包中不包含任何标题。我对此感到困惑。为 parent 定义的变量CMakeLists.txt应该由 child 拾取CMakeLists.txt。我错过了什么?我会很感激一两个提示。

0 投票
1 回答
221 浏览

dll - CPack 不包含 mfc100.dll

我认为这个指令在我的由 CPack 生成的 NSIS 安装程序中包含了必要的运行时库:

但事实并非如此。当我在另一台 PC 上使用此安装程序安装我的应用程序时,它抱怨mfc100.dll缺少 - 它不包含在安装程序中。尝试将 MFC 链接设置为静态会在编译时导致无数错误,因此这不是一个选项。

我可以手动找出可以从中获取的路径mfc100.dll并将其复制到 CMake 脚本中的安装目录,以便将其包含在 NSIS 安装程序中吗?还有其他选项可以包含它吗?

0 投票
0 回答
208 浏览

cmake - CPack:为 32 位或 64 位系统创建包

是否可以在CMake文件中设置一个变量来指示创建的包CPack是为32位还是46位系统生成的?

0 投票
1 回答
1285 浏览

linux - CPack:“make package”生成一个空的deb包

我正在使用 CMake 和 CPack 的组合来生成一个包。这是CPack我的 CMake 文件的一部分:

在我的电脑(64 位)上,执行“make package”给了我一个功能齐全的.deb包:

运行 CPack 打包工具...
CPack:使用 DEB 创建包
CPack:安装项目
CPack:-运行预安装目标:XXX
CPack:-安装项目:XXX
CPack:创建包
CPack:-包:/home/username/xxx-B -4.0.0.deb 生成。

但在另一个系统(32 位 Lenny)上,使用相同的 CMake 文件执行相同的命令,给了我一个空.deb包。有什么问题?

32bit系统输出:

运行 CPack 打包工具...
CPack: 使用 DEB 创建包
CPack: 安装项目
CPack: - 运行预安装目标: XXX
CPack: - 安装项目: XXX
CPack:压缩包
CPack:完成包
CPack: 包 /home/username/xxx -B-4.0.0.deb 生成。

我已经强调了输出之间的差异。

0 投票
1 回答
1167 浏览

cmake - 资源文件在使用 CMake 和 CPack 构建的 Mac OS X 应用程序包中包含两次

我正在尝试使用 CMake 和 CPack 构建和打包 Mac OS X 应用程序,但我无法找出包含资源的正确方法。

这就是我的CMakeLists.txt样子:

但是,当我使用它来构建一个包时,它foo.txt被包含两次:在Resources包的目录中,如预期的那样,但也在根目录中:

我究竟做错了什么?

编辑

为了更容易阅读,这是最终的工作的CMakeLists.txt样子(根据乔希的回答和我对此的评论):