Redis Desktop Manager编译
本文主要讲述rdm在mac下的编译过程。
一、下载源码
git clone --recursive https://github.com/uglide/RedisDesktopManager.git -b 0.9 rdm && cd ./rdm
这里直接按照官方的说明下载源码并切换到0.9分支。
二、安装XCode
由于较低版本的XCode带的编译工具xcodebuild可能无法编译rdm的依赖项,因此建议升级XCode,本人编译时使用的XCode为10.1。 XCode的版本也会被系统版本限制无法升级,如遇到此情况建议先升级系统。本人编译时将系统升级到macOS Mojave 10.14.2。
三、安装Homebrew
由于编译rdm需要用到其他工具或三方库,因此系统最好安装有包管理器方便下载或更新其他软件包。
四、拷贝plist文件
cd ./src && cp ./resources/Info.plist.sample ./resources/Info.plist
五、安装依赖软件包
brew install openssl cmake
六、编译依赖项
该依赖项即包含第三方的软件包也包含源码中的部分,在编译rdm之前需要提前安装或使用XCode的工具编译,按照官方文档只需执行以下配置好的代码即可:
./configure
七、编译rdm
需要先安装Qt5.9及Qt Creator,安装完成后使用QtCreator打开src下面的rdm.pro,直接编译。
八、解决编译问题(重点)
以上步骤完全基于官方文档的说明,但是很多人按照以上步骤仍然无法完成编译工作,主要因为编译过程中出现了较多官方文档中为说明的问题,以下给出可能出现的问题及解决办法
1. xcodebuild 'quiet' 选项找不到
该问题由于XCode版本较低导致,升级XCode即可。
2. breakpad.xib无法编译
找到该文件并使用XCode打开,在XCode右侧有个Build for选项,选择高版本的macOS。
3. 找不到string.h这个头文件
遇到该问题尝试使用以下解决方式,任意一种可能都会解决该问题。
* 安装或重装XCode command line
* 清空Qt Creator的构建目录,重新编译
* 取消shadow build
4. 无法生成app boudle
该问题不影响编译,但会影响到打包,而且编译出来的rdm实际上是debug版本。正常编译一个应用程序一般都会选择release版本,因此当用Qt Creator编译rdm时,用户可能通过直接点击左下角的按钮来编译release。然而实际上rdm.pro的配置还是debug版本,因此,此时用户编译出来的还是debug版本的rdm,该rdm没有app boudle,只是生成了一个rdm的可执行程序。为了解决该问题并编译真正release版本的rdm,需要手动修改rdm.pro文件:
CONFIG -= debug
CONFIG += release
然而做了该改动之后rdm会编译报crashreporter相关的错误, 个人认为是rdm的release版本的配置出了问题(官方挖的坑?毕竟官方提供的需要订阅费)。对于该错误可直接修改rdm.pro中mac相关的配置,找到并注释掉以下代码即可:
CRASHREPORTER_APP.files = $$DESTDIR/crashreporter
CRASHREPORTER_APP.path = Contents/MacOS
至此,rdm可以完成编译运行了。
九、编译带ssh功能的rdm
官方0.9.9版本的rdm不带ssh功能,若需要使用ssh可手动切换到0.9.8. 注意保持以上修改不变。
1. 安装libssh2
brew install libssh2
2. 编译问题
2.1 无法找到-lssh2
libssh2默认安装路径为/usr/local/lib,而对于有些系统,该路径不在系统库文件的默认搜索路径中,为了找到该库文件,可以修改系统配置文件来将其添加到默认搜索路径中,这里为了简单直接在rdm.pro中添加一下代码:
LIBS += -L/usr/local/lib
2.2 编译后界面黑屏
估计也是官方挖的坑,这里之所以黑屏是Qt Quick scenegraph backend的配置导致到,在0.9.9版本中统一使用了QSGRendererInterface::Software的方式渲染界面,然后在0.9.8版本却改为了只在LINUX和WINDOWS上使用该方式,为了解决该问题只需要找到源码中Application::initQml函数并注释掉相关的预处理命令:
#if defined(Q_OS_WIN) || defined(Q_OS_LINUX) // 注释掉
QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software);
#endif // 注释掉
至此带ssh功能的0.9.8版本编译完成,并可正常运行。根据本人的运行结果显示windows和mac os的0.9.9版本的多语言切换都存在问题,只能显示英文,而0.9.8版本却是正常的,因此建议使用0.9.8版本,而且还带了ssh功能。
3. 其他问题
由于0.9.8版本不是最新版,因此程序每次运行都会弹出更新和QuickStart弹框,为了解决该问题,直接找到对应文件(app.qml中)注释掉以下代码:
Component.onCompleted: {
if (connectionsManager.size() == 0)
quickStartDialog.open()
}