Mac版Redis Desktop Manager编译

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()

}

十、参考文档

RDM官方文档

你可能感兴趣的:(Mac版Redis Desktop Manager编译)