mac 系统,如何利用 qt 编译 redisdesktop
发布于 作者:苏南大叔 来源:程序如此灵动~
苏南大叔安装qt的主要原因,就是:想获得最新版的redisdesktop。redisdesktop的简要介绍见文末链接。在上一篇文章中,苏南大叔讲到:mac版的redisdesktop,在官网要收费才能下载,但是在github上面也有最新版下载。

但是!世道变了!github上面已经不提供最新版的mac版redisdesktop下载了,需要自己编译!自己编译,就需要下载qt!要15g以上空间!而且编译拿到的也不是dmg文件。所以,如何选择,各位看客请自行决定。anyway,苏南大叔就是想体验一下qt编译redisdesktop的乐趣...
下载redisdesktop的源码
目前redisdesktop的套路是:可以免费下载到exe版本的redisdesktop,但就是不能免费下载到dmg版redisdesktop。大家可以从这里,获得最新的源码。

准备工作
整个编译过程,需要准备git/brew/xcode/libssl2/qt这些软件。但是由于除了qt之外,其它都是必备经典软件。一般来说,程序员的mac开发机上面都有安装的。所以这里也不用做过多描述,文末有相关链接可以参考。



所以,qt的安装可能是重点难点。苏南大叔提供的qt安装经验文字,详见文末链接。假设您已经安装好了qt的编译环境。

编译源文件(官方指南)
官方有在mac下面使用qt编译的流程,但是一些细节是没有讲述的。如果您不熟悉qt的编译套路,就可能被卡住了。下面的文字来自redisdesktop官方的网页说明。这里需要澄清的是:官方下载中,说的是mac和ubuntu用户请自己编译,或者付费。并不仅仅针对mac用户,ubuntu用户也被牵连了。

Install XCode with xcode build tools
Install Homebrew
Build RDM dependencies cd ./src && ./configure
Install Qt 5.9
Open ./src/rdm.pro in Qt Creator
Run build编译过程
官方说明说的很潦草不清晰。显然,redisdesktop官方也是不希望大家自己编译的。估计也许是受制于qt的开源协议,所做的一部分妥协吧?
第一步,下载源码。
- 选择使用
git clone命令。注意修改下面的-b参数,选择一个合适的分支。 - 或者选择
git clone命令,不指定-b参数。 - 不过,苏南大叔觉得:还是手工下载GitHub上的release里面的源码更稳妥。
git clone --recursive https://github.com/uglide/RedisDesktopManager.git -b 0.9 rdm && cd ./rdm
第二步,安装依赖。
这步操作,和苏南大叔安装php扩展的时候使用的套路,是一样一样的。
cd ./src/
./configure
第三步,使用qt进行编译。
苏南大叔需要一个文件./src/resources/Info.plist.sample,cp成Info.plist文件。否则在后续的编译过程中会报错的。

然后找到./src/rdm.pro,双击启动qt creator。然后就可以愉快地进行qt编译了。

构建的过程,需要执行左下角的任一按钮即可。当然,最后一个按钮是编译,另外两个按钮就是附带着编译了。生成的文件在./bin/osx/debug/rdm这个位置。双击即可执行。





不过得到的这个最终的rdm文件,和苏南大叔想象中的mac版的dmg包,还是有一定的距离的。目前拿到的这个rdm文件,据说只能在当前mac上面使用,其它电脑上会找不到相关链接库。剩下的过程就是:使用macdeployqt对rdm文件进行软件包装了。
相关链接
- 《mac系统如何安装下载安装qt,qt的基本使用方法》
https://newsn.net/say/mac-qt-install.html
- 《mac系统,brew安装与xcode协议》
https://newsn.net/say/mac-brew-xcode.html
小结
至于利用macdeployqt包装生成dmg安装包,redisdesktop官方很不希望大家拿到dmg包。所以目前来看,编译得到的成品,只能在自己的mac上面使用,别人的电脑上是不能用的。所以,这里大家也就可以暂时先洗洗睡了。
在官方的issue里面,有人提到了这个问题,结果回复是:希望大家购买mac版本。哈哈~。大家可以看看下面的这个链接,看一下官方的相关回复。
使用macdeployqt进行包装的相关经验,敬请关注苏南大叔的后续文字,感谢您的支持。https://newsn.net/tag/qt/ 。