问题标签 [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 回答
2500 浏览

icons - 为 cmake-cpack 应用程序指定图标和菜单项

我正在尝试使用 CMake 和 CPack 为我正在开发的应用程序创建和安装包(.deb 和 .rpm)。包创建得很好,但是在运行 dpkg -i mypackage.deb 后我没有在 KDE 菜单中获得条目。

以下是我正在执行的步骤:

摘自 CMakeLists.txt:

ddm.desktop 看起来像:

ddm.xml 看起来像:

现在发生的事情是,当我运行sudo make install应用程序时,应用程序会自行安装在菜单中(但没有图标),但是当我运行dpk -i package.deb应用程序时,应用程序会自行安装,但不会创建任何 kde 菜单条目......

知道我做错了什么吗?

0 投票
2 回答
4762 浏览

cmake - 你是如何做到的,这样 cpack 就不会将所需的库添加到 RPM 中?

我正在尝试将我们在工作中的构建系统转换为 cmake,并且遇到了它生成的 RPM 的一个有趣问题(通过 cpack):它会自动将它认为您的 RPM 具有的所有依赖项添加到其所需列表中图书馆。

总的来说,这很好,但就我而言,这是灾难性的。不幸的是,我们构建的开发包最终安装了一个我们自己开发的工具,该工具使用 rpm 将它们安装在与系统一分开的 RPM 数据库中。这很愚蠢,但我无法改变它。这意味着任何普通库将依赖的所有系统库(如 libc 或 libpthread)都不在与我们的开发包一起使用的 RPM 数据库中。因此,如果我们的开发包之一的 RPM 列出了需要的系统库,那么我们就无法安装它,因为 rpm 会认为它们没有安装(因为它们列在普通数据库中而不是它被告知在安装我们的软件包时使用)。我们当前的构建东西处理得很好,因为它没有将任何系统库列为 RPM 中的依赖项,但 cpack 会自动填充 RPM 所需库的列表并将系统库放在那里。我需要一种方法来阻止它这样做。

我尝试设置CPACK_RPM_PACKAGE_REQUIRES"",但这没有效果。RPM cpack 生成的最终仍会列出所需的系统库。在这一点上,我所能想到的就是复制 RPM cpack 生成器并将其修改为我想要的并使用它而不是标准的,但我宁愿避免这种情况。有谁知道如何让 cpack 停止使用所需的库填充 RPM?

0 投票
0 回答
785 浏览

windows - 是否可以在安装时使用 cpack 环境变量?

我正在尝试将工作中的一些东西移植到 cmake,而我们使用 Windows 安装程序(目前使用 Inno Setup)所做的事情似乎在 cmake/cpack 中没有必然结果。我们有在安装时根据环境变量安装的开发库。因此,包含文件转到类似"%DEV_INCLUDE_DIR%/include"的位置,库文件本身转到类似"%DEV_LIB_DIR%/lib"的位置,并且环境变量DEV_INCLUDE_DIRDEV_LIB_DIR在安装程序运行时位于框上的环境中。因此,它们在生成安装程序的盒子上的内容无关紧要。

但是,cmake 似乎希望在编译时配置所有这些。它使用install目标生成packagecpack 的目标,然后您使用install命令添加要与安装程序一起安装的内容。如果我尝试将环境变量放在路径中,它就无法正常工作。如果我尝试

然后我最终在使用 NSIS 安装程序安装包时得到一个%DEV_INCLUDE_DIR%文件夹CMAKE_INSTALL_PREFIX,这绝对不是我想要的。我希望它%DEV_INCLUDE_DIR%在安装时替换为该环境变量的值。我找不到任何方法来做到这一点。有谁知道如何做到这一点,或者甚至可能吗?

说实话,在这种情况下,我什至没有什么安装前缀(所有东西都是根据环境变量安装的),但是 cmake 似乎是围绕有一个的想法构建的,我希望安装前缀会如果命令DESTINATIONinstall的每个都是绝对目录,则只需忽略(或最坏的情况,创建一个空目录) ,但它不会将环境变量视为环境变量或绝对目录。我能想到的告诉 cmake 将其视为环境变量(例如$ENV{DEV_INCLUDE_DIR}")的所有方法都涉及在构建它的盒子上使用环境变量,而不是在安装它的盒子上使用环境变量。有什么方法可以让 cmake/cpack 的安装/打包内容在安装时实际使用环境变量?

0 投票
0 回答
1806 浏览

cmake - 是否可以将 Inno Setup 与 cmake/cpack 一起使用?

我正在将我们工作中的一些项目移植到 cmake/cpack,虽然我们目前的东西正在使用 Inno Setup,但似乎没有用于 Inno Setup 的内置 CPack 生成器。它似乎是 zip 文件或 NSIS。是否有任何使用 Inno Setup 的 CPack 生成器(如果有,我在哪里可以找到它们)?如果没有,除了编写脚本并让cmake为其package目标运行之外,还有其他方法可以将Inno Setup与cmake一起使用吗?

0 投票
3 回答
881 浏览

cmake - 如何在 CPACK 和 NSIS 中为文本文件添加开始菜单项

我想在开始菜单中输入release_notes.txt或。release_notes.html当我在菜单中选择 release_notes 条目时,文本文件将出现在记事本中或 html 填充在 Web 浏览器中。但我不知道如何编写命令CMakeLists.txt来做到这一点。

0 投票
1 回答
297 浏览

mysql - 无法使用 CMake 2.8.10.2 为 MySQL Connector/C 6.0.2 生成构建文件

当我尝试在 Windows 7 x64 上使用 CMake 2.8.10.2 为 MySQL Connector/C 6.0.2 生成 Visual Studio 2010 构建文件时,出现以下两个错误。

在我看来,问题出在 CPack 上——但我真的不明白这里出了什么问题……

0 投票
2 回答
3386 浏览

c - cpack 找不到库,此目录中不存在目标

apr-1 是 apache 可移植运行时,我自己下载并编译它来创建共享库(所以它不是由 cmake 制作的)。在目标系统上运行 CPack 后,我需要链接到这个库。

我的开发项目目录:

对于我的 CMakeLists.txt,一切安装正常,但现在我遇到了链接问题,因为它找不到库的新位置。

我已经删除了,LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/libs)因为我现在不需要这个,因为我正在使用FIND_LIBRARY.

并添加了以下内容:

一切都安装好了,但是当我检查可执行文件以查看它链接到的库时找不到它,apr-1因为它看起来在错误的位置。

这是因为我已将安装包解压缩到与编译位置不同的新位置。从编译的目录中我得到了这个,它运行正常:

我安装后我在目标安装机器上有这个目录结构,所以可执行文件将链接到新libs/apr-1库:

非常感谢您提供任何进一步的建议,

gcc (GCC) 4.7.2 cmake 版本 2.8.9 Fedora 17

你好,

我收到以下错误:

我有以下目录:

在我的根 CMakeLists.txt 中,我有以下内容:

在我的 src 目录中,我有以下 CMakeLists.txt

问题是这里的这一行:

我尝试过以下操作

但它仍然无法找到图书馆。

并且还使用这样的路径:

我希望能够像这样将目录放在那里,这样我就不必指定每个库,而只需像这样的目录:

因此它可以找到该目录中的所有库。我有大约5个。

非常感谢您的任何建议,

0 投票
0 回答
704 浏览

cmake - 如何在没有 CMake 的情况下使用 CPack 创建 NSIS 安装程序

我想在同一位置安装多个软件。这些软件是二进制文件,包含不受 CMake 管理的文件。我的想法是使用 CPack 和 NSIS 生成器但不使用 CMake,以便将软件安装在用户定义的位置,然后启动将创建环境变量的自定义脚本(在 Windows 下)。

可以用 CPack 做到这一点吗?似乎可以使用 CPackConfig.cmake 文件来完成,但我没有设法定义我想安装的目录。

谢谢你的帮助。

0 投票
1 回答
744 浏览

c++ - 为 LLVM libc++ 3.3 构建静态库和共享库

来自 SVN的最新 LLVM libc++3.3 带有一个CMakeLists.txt. 我是 CMake 新手,但昨天我学习到能够libc++在 RHEL 6.4 x86_64 主机上构建签出。

此外,我能够在其中添加足够多的CPack相关命令CMakeLists.txt来生成libcxx-3.3.svn-0.el6.x86_64.rpm. 但很可能由于是新手CMake,我无法同时构建静态库和共享库。

是的。我回顾了是否可以让 CMake 构建同一库的静态和共享版本?. 但是,我不想使用add_libraryand 枚举所有源文件,而是想使用libc++'s CMakeList.txt- using所采用的方法APPEND

我可以通过将ON下面的第 40 行替换OFF为构建静态库来生成静态库

或者我可以保持原样并构建一个共享库。

我还修改了以下几行,NOT例如删除或注释掉第 232 和 233 行。但无论我尝试了什么,我似乎都无法让静态库与共享库一起构建。

如何调整CMakeList.txt文件以便同时构建两者?

0 投票
1 回答
1156 浏览

cmake - 如何在 CMakeLists.txt 中禁用 CPACK_PACKAGE_VERSION_PATCH?

我还是一个CMake新手(3天前开始学习)。在我当前CMakeLists.txt,我有以下set指令:

一旦我运行make package,我得到了一个libcxx-3.3.svn-0.el6.x86_64.rpm.

但恕我直言,这是“作弊”。

根据http://fedoraproject.org/wiki/Packaging:NamingGuidelines#Package_Naming_and_Versioning_Guidelines,理想情况下我应该能够生成一个libcxx-3.3-0.el6.x86_64.rpm。但这要求CPack不显示CPACK_PACKAGE_VERSION_PATCH

尽管如此,根据我的试验结果,这似乎并不可行。我将不胜感激有关如何的提示。