社区
其他技术讨论专区
帖子详情
linux – CMake / CPack:针对不同平台的首选包生成器
weixin_38066328
2019-09-12 10:55:27
我想在Linux,OSX和Windows上分发C/C++项目的可执行文件和库.什么是首选的CPack生成器,即大多数用户可能都可以使用它们?在Windows上似乎只有NSIS,但在Linux和OSX上有几种选择.顺便说一下,也会生成源代码分发,因此理论上,所有平台的用户都应该能够自己编译代码,但我们希望提供预编译的二进制文件以方便使用.
...全文
133
1
打赏
收藏
linux – CMake / CPack:针对不同平台的首选包生成器
我想在Linux,OSX和Windows上分发C/C++项目的可执行文件和库.什么是首选的CPack生成器,即大多数用户可能都可以使用它们?在Windows上似乎只有NSIS,但在Linux和OSX上有几种选择.顺便说一下,也会生成源代码分发,因此理论上,所有平台的用户都应该能够自己编译代码,但我们希望提供预编译的二进制文件以方便使用.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weixin_38079736
2019-09-12
打赏
举报
回复
每个不同平台都有多种常见做法.哪一个最适合您将取决于多种因素,但以下内容至少应该有助于选择CMake / CPack直接支持的更流行的格式.我假设您通过CMake使用CPack(即通过CPack module,也可能使用CPackComponent module的包组件). 视窗: > 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的系统可以使用外星人等工具支持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等档案提供支持.这些是非常基本的格式,只是将文件整合到一个存档中.它们没有桌面集成,安装前/安装后的有用功能,但它们作为上述其中一种的第二种替代包格式非常方便.特别是,它们对于在其系统上没有管理员权限并希望简单地解压缩到方便位置的用户非常有用.
编译时遇到
CMake
Error at /usr/lib/x86_64-
linux
-gnu/
cmake
/pcl/PCLConfig.
cmake
:45 (message):common is re
编译PCL时遇到
CMake
Error at /usr/lib/x86_64-
linux
-gnu/
cmake
/pcl/PCLConfig.
cmake
:45 (message):common is required but boost was not found解决办法 昨天修改代码,编译的时候遇到/usr/bin/ld: 找不到 -lopencv_xphoto/usr/lib/x86_64-
linux
-gnu/libboost_system.so collect2: error: ld returned 1
cmake
编译安装完成后 执行
cmake
--version报错 bash: /usr/bin/
cmake
: 没有那个文件或目录
cmake
编译安装完成后 执行
cmake
--version报错 bash: /usr/bin/
cmake
: 没有那个文件或目录
cmake
没有那个目录 - 未完代码 - 博客园 因为直接使用
cmake
系统回到默认的/usr/bin中去寻找,但是src中安装的
cmake
是在/usr/local/bin中,所以当然不会找到。解决方法: 做一个链接即可:ln -s /usr/local/bin/
cmake
/usr/bin 然后使用/usr/local/bin/
cmake
进行编译。 ...
-bash: /usr/bin/
cmake
: No such file or directory错误
成功安装
cmake
后,如果出现-bash: /usr/bin/
cmake
: No such file or directory, 则可以手动添加,找到安装的
cmake
文件,进入
cmake
3.x文件夹中,在进入bin文件夹,运行 cp ./
cmake
-3.x/bin/
cmake
/usr/bin/ 即可解决。 ...
CMake
Warning at
cmake
/OpenCV
Pack
aging.
cmake
:23 (message): C
PACK
_
PACK
AGE_VER 问题处理
今天在win7中配置opencv2.4.13 时报错 ,错误信息是:
CMake
Warning at
cmake
/OpenCV
Pack
aging.
cmake
:23 (message): C
PACK
_
PACK
AGE_VER 网上搜了一圈,发现只有提问的,没有找到答案,只好自己想办法了。 我也是
cmake
小白,没使过这工具,只好硬着头皮去想办法。根据报错信息“”
cmake
/OpenCV
Pack
a
源码安装MySQL8提示错误:
CMake
Error at
cmake
/os/
Linux
.
cmake
:67 (MESSAGE):
源码安装MySQL8时
cmake
提示如下信息
CMake
Error at
cmake
/os/
Linux
.
cmake
:67 (MESSAGE): GCC 5.3 or newer is required (-dumpversion says 4.8.5) Call Stack (most recent call first):
CMake
Lists.txt:453 (INCLUDE) 上...
其他技术讨论专区
435
社区成员
791,270
社区内容
发帖
与我相关
我的任务
其他技术讨论专区
其他技术讨论专区
复制链接
扫一扫
分享
社区描述
其他技术讨论专区
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章