gpt4 book ai didi

linux - CMake/CPack : Preferred package generators for different platforms

转载 作者:可可西里 更新时间:2023-11-01 14:48:03 25 4
gpt4 key购买 nike

我想在 Linux、OSX 和 Windows 上分发 C/C++ 项目的可执行文件和库。什么是首选的 CPack 生成器,即哪些可能可供大多数用户使用?在 Windows 上似乎只有 NSIS,但在 Linux 和 OSX 上有几种选择。
顺便说一句,源代码分发也是如此,所以理论上所有平台的用户都应该能够自己编译代码,但为了方便起见,我们希望提供预编译的二进制文件。

最佳答案

每个不同平台上都有多种常见做法。哪一种最适合您取决于多种因素,但以下内容至少应该有助于在 CMake/CPack 直接支持的更流行的格式中进行选择。我假设您正在通过 CMake 使用 CPack(即通过 CPack module ,可能还有使用 CPackComponent module 的包组件)。

window :

  • NSIS package generator生成普通用户已经习惯使用的可执行安装程序。这些支持基于组件的安装,因此您可以将源作为可选组件提供。 CMake 对此包生成器的支持相当成熟,但最近它可能成为不太受欢迎的方法。
  • WIX package generator生成 MSI 安装程序。对此的支持较新,并且在功能开发等方面似乎更加活跃。它还支持基于组件的安装,并且似乎正在成为 NSIS 的首选格式。

  • 苹果机

    Mac 有许多选项可供选择,但哪一个最合适取决于您要打包的内容。如果您只想提供单个应用程序包, DMG package generator (有时也称为 DragNDrop 生成器)可能就是您想要的。用户对这些非常熟悉,并且易于使用。避免使用 Bundle generator ,它更旧并且支持的内容更有限,因此应该首选 DMG 生成器。

    对于包含多个包的包,DMG 生成器仍然可能适用,但适当的安装程序可能更合适。直到最近几年, PackageMaker generator是为此的首选生成器,但它已被 ProductBuild generator 取代(自 3.7 版起由 CMake 支持)。

    Linux

    在基于 RedHat 的系统上,RPM 通常是选择的包格式(使用 RPM generator),而对于基于 Debian 的系统,首选 DEB 格式(使用 DEB generator)。基于 Debian 的系统可以使用 Alien 等工具支持 RPM,但用户几乎总是更喜欢原生 DEB 格式。如果您愿意同时提供两者,则可以让两个阵营都满意,但请注意,您必须特别注意二进制兼容性。过去可以针对 LSB (Linux Standards Base) 构建的简单包生成一个可以在所有主要 Linux 发行版(甚至基于 Debian 的发行版)上运行的单一 RPM,但是 LSB 并没有真正跟上最近的发展,它从来没有真正支持过最复杂的应用程序所需的全套功能(或他们提供的软件包版本太旧)。但是,LSB 确实提供了非常有用的工具,例如 app checker用于评估您(以任何方式)构建的软件包是否会在各种 Linux 发行版中丢失符号等。

    请注意,对于 Linux,您应该区分您的目标是打包以包含在 Linux 发行版本身中,还是希望用户在发行版的打包系统之外下载和安装软件包。较大的独立商业软件产品会倾向于以独立包的形式分发,包括相关的库等并安装在 /opt下。默认情况下(如果他们遵循 LSB 和 Filesystem Hierarchy Standard - FHS (PDF) 所倡导的准则)。理想情况下,您应该使您的软件包可重定位,以便发行版维护人员可以更轻松地根据发行版的要求调整您的打包方法。

    RPM 和 DEB 都在某种程度上支持源码包。

    跨平台
  • IFW package generator被一些人喜欢作为一种生成在所有平台上具有相似外观和感觉的安装程序的方式。它在提供对可下载组件等功能的支持方面也相当进步。如果您对跨所有平台的易于使用的图形安装程序感兴趣,那么这可能就是您正在寻找的。
  • Archive package generator提供对 ZIP、tarball、7z 等文件的支持。这些是非常基本的格式,可以将您的文件简单地合并为一个存档。它们没有桌面集成、安装前/安装后和卸载等有用的功能,但它们作为上述之一的第二种替代包格式很方便。特别是,它们对于在其系统上没有管理员访问权限并希望简单地将其解压缩到方便位置的用户非常有用。
  • 关于linux - CMake/CPack : Preferred package generators for different platforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46011440/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com