| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> MacOS Qt应用打包 -> 正文阅读 |
|
[开发工具]MacOS Qt应用打包 |
一.简介在MacOS上打包带图形的界面,一定是从Bundle创建的,这个Bundle就像是Apk,里面包含了代码,包含库和资源文件等等。 如果自己创建一个QT工程,用的是.pro文件,这个文件会自带这个Bundle属性,保险起见也可以这样加上:
如果没有Bundle,会编译不出后面要用到的.app。用CMakeLists.txt 需要自行配置Bundle:?
MacOSXBundleInfo.plist.in :?
二.打包先在QT里面选择Release版本,编译一下,完了进入build目录,正常来说会在buile目录看到一个example.app的文件,如果没有,只有一个可执行文件,就是没设置Bundle。 首先执行:
这个工程会把example用到的资源文件、三方库都拷贝到example.app/Contents/,然后三方库就会放在example.app/Contents/Frameworks/ 下。 具体到我们的应用,它会把一些三方库都帮我们拷贝到Frameworks下: 然后重要的来了,就是调整库的依赖结构,用”otool -L ” 可以看到程序或者其它库的依赖库情况:
?就会把它的依赖库的路径都列出来了,如果有些三方库,比如libopus.dylib是指向/usr/lib/的,就要手动改过来,不然运行的时候它会跑到系统目录去找,在其他人的环境就会出现问题,如果是一些公共库的比如libc++.1.dylib 这种就没啥问题了。 上图是example的库依赖,这里用macdeployqt 执行完后还是比较完善的,路径都没啥问题,不需要去改。 但如果这样直接打包,完了之后运行dmg可能还是会报错: 这个问题困扰了好一段时间,明明上面列出来的路径都是对的,但总是还会去系统路径找,百思不得其解。后来看文档说otool 还能看库的依赖,然后去列了图中的libavformat.58.dylib:
才发现这里的路径有些是系统的,这样就得一个个改了?
这个install_name_tool是MacOS专门用来改依赖库的。
这样打出来的包就能在其它MAC电脑用了。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:58:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |