习惯各种图像化操作工具,为了简化 对Redis 数据库的操作,根据网上大家的推荐找到了RedisDesktopManager,但是它在最新版的release中就没有编译过的macosx版本了,而是通过收费订阅提供。能够找到的最新版的安装包是0.9.51但是在 mac10.12.6下闪退。本来打算订阅一个月下载来用用,结果订阅只能使用 VISA 信用卡,没办法本屌还真没有,所以选择自己编译,下边就把我踩过的坑和大家分享一下。
1.下载源码
git clone --recursive https://github.com/uglide/RedisDesktopManager.git -b 0.9 rdm && cd ./rdm
这里要注意下载的源码是有第三方依赖的,要保证第三方依赖包也下载下来,哪怕你自己一个一个手动下载。
2.下载安装Qt 5.9+
我这里下载的是5.9.1
3.编译第三方依赖
源码下载完毕执行进入 src 目录运行./configure
cd src/
./configure
4.启动 QT 打开 src 下的rdm.pro,

5.选择项目展开 desktop->build 选择 左下角的release 等待运行的三角变绿,点击运行工程
6..打包app
经过步骤3和4成功运行会得到 rdm 直接运行就可以使用,但是这样未免也太 low了,要像 mac 上的其他应用一样点击图标运行才是打开应用的正确姿势呀,对于我这样的强迫症实在无法忍受,所以继续摸索。
按照 QT 使用的说法 说明应该是在第四步运行工程的时候就已经生成了对应 app 文件包了,但事实是我这里没有自动生成,所以找原因,在 QT 官网上找到这样一句说通过"CONFIG-=app_bundle" 可以关闭 QT 自动打包成一个后缀为.app 的应用包,结果搜索一下 rpm.pro 的文件确实有这样的配置吧这个功能关闭了。
所以我们把这句注释掉,打开这个功能,如下图:
当我信心满满的时候去运行结果报错,如下图:
也就是说少了一个 Info.plist 文件和 crashreporter文件,一个一个解决;
1)Github 上搜索会找到一个说明,原来在工程下有src->resources->Info.plist.sample这个文件直接改成Info.plist即可。
2)crashreporter这个把我难到了,理论上不是应该在编译第三方依赖库的时候就有了吗??找了好久不得其解,突然灵光一闪,为啥不参考一下之前安装的版本,结果在0.9.41的安装包中找到了此文件直接复制一份到 rmd 同级目录,最终如下图结构:
再次运行就会的到熟悉的.app 的文件包了
7.发布app 给别人使用并打包为 dmg
经过第5步的一顿折腾这个时候这个 app 还只能在你本地运行被人想用的时候是用不了的,因为他依赖了本地的一些 QT 库,如果想给别人是用需要将这些依赖库复制到 rdm.app//Contents/Frameworks的目录下;那么我们怎么知道用了那些库呢?qt 给我们提供了一个方便的工具macdeployqt这个工具在QT的安装目录/5.9.1/clang_64/bin/下,为了方便可以加到环境变量里使用。运行如下命令:
macdeployqt rdm.app -qmldir=../../../src/qml
这样得到的一个其他人没有环境也可运行的应用包,右键 rdm.app->显示包内容你会发现在Frameworks目录下多了好多内容。至此你就可以把这个应用给别人使用了。
8.打包为 dmg
为了更方便给别人使用我们将 app 打包成 dmg 安装包。在桌面新建一个文件夹,取名dmg吧,将app文件放进去。为了实现拖拽到Application的效果,需要在这个文件夹里放一个Application的替身。具体做法是cd到这个目录,建立一个软链接。
$ cd /Users/xxxxx/Desktop/dmg
$ ln -s /Applications/ Applications
然后利用系统自带的磁盘工具打包成 dmg
好了,现在打开这个dmg,就能直接拖拽到Applications里了,这样我们的应用出现在Launchpad里了。