Redis Desktop Manager編譯
本文主要講述rdm在mac下的編譯過(guò)程幔妨。
?一漏麦、下載源碼
git clone --recursive https://github.com/uglide/RedisDesktopManager.git -b 0.9 rdm && cd ./rdm
這里直接按照官方的說(shuō)明下載源碼并切換到0.9分支薄疚。
二懈玻、安裝XCode
由于較低版本的XCode帶的編譯工具xcodebuild可能無(wú)法編譯rdm的依賴項(xiàng)根盒,因此建議升級(jí)XCode,本人編譯時(shí)使用的XCode為10.1秉剑。 XCode的版本也會(huì)被系統(tǒng)版本限制無(wú)法升級(jí),如遇到此情況建議先升級(jí)系統(tǒng)稠诲。本人編譯時(shí)將系統(tǒng)升級(jí)到macOS Mojave 10.14.2侦鹏。
三、安裝Homebrew
由于編譯rdm需要用到其他工具或三方庫(kù)臀叙,因此系統(tǒng)最好安裝有包管理器方便下載或更新其他軟件包略水。
?四、拷貝plist文件
cd ./src && cp ./resources/Info.plist.sample ./resources/Info.plist
五劝萤、安裝依賴軟件包
brew install openssl cmake
六渊涝、編譯依賴項(xiàng)
該依賴項(xiàng)即包含第三方的軟件包也包含源碼中的部分,在編譯rdm之前需要提前安裝或使用XCode的工具編譯床嫌,按照官方文檔只需執(zhí)行以下配置好的代碼即可:
./configure
七跨释、編譯rdm
需要先安裝Qt5.9及Qt Creator,安裝完成后使用QtCreator打開(kāi)src下面的rdm.pro厌处,直接編譯鳖谈。
八、解決編譯問(wèn)題(重點(diǎn))
以上步驟完全基于官方文檔的說(shuō)明阔涉,但是很多人按照以上步驟仍然無(wú)法完成編譯工作缆娃,主要因?yàn)榫幾g過(guò)程中出現(xiàn)了較多官方文檔中為說(shuō)明的問(wèn)題,以下給出可能出現(xiàn)的問(wèn)題及解決辦法
1. xcodebuild 'quiet' 選項(xiàng)找不到
該問(wèn)題由于XCode版本較低導(dǎo)致瑰排,升級(jí)XCode即可贯要。
2. breakpad.xib無(wú)法編譯
找到該文件并使用XCode打開(kāi),在XCode右側(cè)有個(gè)Build for選項(xiàng)凶伙,選擇高版本的macOS郭毕。
3. 找不到string.h這個(gè)頭文件
遇到該問(wèn)題嘗試使用以下解決方式,任意一種可能都會(huì)解決該問(wèn)題函荣。
* 安裝或重裝XCode command line
* 清空Qt Creator的構(gòu)建目錄显押,重新編譯
* 取消shadow build
4. 無(wú)法生成app boudle
該問(wèn)題不影響編譯,但會(huì)影響到打包傻挂,而且編譯出來(lái)的rdm實(shí)際上是debug版本乘碑。正常編譯一個(gè)應(yīng)用程序一般都會(huì)選擇release版本,因此當(dāng)用Qt Creator編譯rdm時(shí)金拒,用戶可能通過(guò)直接點(diǎn)擊左下角的按鈕來(lái)編譯release兽肤。然而實(shí)際上rdm.pro的配置還是debug版本套腹,因此,此時(shí)用戶編譯出來(lái)的還是debug版本的rdm资铡,該rdm沒(méi)有app boudle电禀,只是生成了一個(gè)rdm的可執(zhí)行程序。為了解決該問(wèn)題并編譯真正release版本的rdm笤休,需要手動(dòng)修改rdm.pro文件:
CONFIG -= debug
CONFIG += release
然而做了該改動(dòng)之后rdm會(huì)編譯報(bào)crashreporter相關(guān)的錯(cuò)誤尖飞, 個(gè)人認(rèn)為是rdm的release版本的配置出了問(wèn)題(官方挖的坑?畢竟官方提供的需要訂閱費(fèi))店雅。對(duì)于該錯(cuò)誤可直接修改rdm.pro中mac相關(guān)的配置政基,找到并注釋掉以下代碼即可:
CRASHREPORTER_APP.files = $$DESTDIR/crashreporter
CRASHREPORTER_APP.path = Contents/MacOS
至此,rdm可以完成編譯運(yùn)行了闹啦。
九沮明、編譯帶ssh功能的rdm
官方0.9.9版本的rdm不帶ssh功能,若需要使用ssh可手動(dòng)切換到0.9.8. 注意保持以上修改不變窍奋。
1. 安裝libssh2
brew install libssh2
2. 編譯問(wèn)題
2.1 無(wú)法找到-lssh2
libssh2默認(rèn)安裝路徑為/usr/local/lib荐健,而對(duì)于有些系統(tǒng),該路徑不在系統(tǒng)庫(kù)文件的默認(rèn)搜索路徑中琳袄,為了找到該庫(kù)文件摧扇,可以修改系統(tǒng)配置文件來(lái)將其添加到默認(rèn)搜索路徑中,這里為了簡(jiǎn)單直接在rdm.pro中添加一下代碼:
LIBS += -L/usr/local/lib
2.2 編譯后界面黑屏
估計(jì)也是官方挖的坑挚歧,這里之所以黑屏是Qt Quick scenegraph backend的配置導(dǎo)致到扛稽,在0.9.9版本中統(tǒng)一使用了QSGRendererInterface::Software的方式渲染界面,然后在0.9.8版本卻改為了只在LINUX和WINDOWS上使用該方式滑负,為了解決該問(wèn)題只需要找到源碼中Application::initQml函數(shù)并注釋掉相關(guān)的預(yù)處理命令:
#if defined(Q_OS_WIN) || defined(Q_OS_LINUX) // 注釋掉
QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software);
#endif // 注釋掉
至此帶ssh功能的0.9.8版本編譯完成在张,并可正常運(yùn)行。根據(jù)本人的運(yùn)行結(jié)果顯示windows和mac os的0.9.9版本的多語(yǔ)言切換都存在問(wèn)題矮慕,只能顯示英文帮匾,而0.9.8版本卻是正常的,因此建議使用0.9.8版本痴鳄,而且還帶了ssh功能瘟斜。
3. 其他問(wèn)題
由于0.9.8版本不是最新版,因此程序每次運(yùn)行都會(huì)彈出更新和QuickStart彈框痪寻,為了解決該問(wèn)題螺句,直接找到對(duì)應(yīng)文件(app.qml中)注釋掉以下代碼:
Component.onCompleted: {
? ? if (connectionsManager.size() == 0)
? ? ? ? quickStartDialog.open()
}