一、背景
筆者有時(shí)候需要使用C++開(kāi)發(fā)一些命令行之類的可執(zhí)行程序放到linux服務(wù)器上部署運(yùn)行,因?yàn)镃++天然的跨平臺(tái)特性, 之前一直都是使用兩套開(kāi)發(fā)環(huán)境,本地mac電腦一套,遠(yuǎn)端Linux一套,在本地開(kāi)發(fā)調(diào)試好之后,再到遠(yuǎn)端Linux進(jìn)行編譯部署測(cè)試。
可在最近開(kāi)發(fā)的過(guò)程需要使用到一些Linux當(dāng)中的一些特定的庫(kù),如果把這些特定的庫(kù)移植或編譯到本地Mac搭建環(huán)境的話必定比較耗時(shí), 而且自己本身才疏學(xué)淺,還不一定能搭建成功,于是筆者便萌了使用Clion進(jìn)行遠(yuǎn)程開(kāi)發(fā)的想法,說(shuō)干就是干,不試不知道,搭建成功后用起來(lái)那是真的爽...
二、遠(yuǎn)程開(kāi)發(fā)環(huán)境搭建
首先這里簡(jiǎn)單講下遠(yuǎn)端Linux主機(jī)的開(kāi)發(fā)環(huán)境搭建,筆者使用主機(jī)是ubuntu系統(tǒng)。
1.安裝C++相關(guān)編譯邊境
直接通過(guò)一下命令行安裝即可:
sudo apt install gcc g++ gdb -y
安裝成功后我們可以通使用命令查看下安裝的版本,例如通過(guò)命令gcc -v即可查看安裝gcc的版本。
2.安裝cmake
同樣使用apt命令安裝一下即可:
apt install cmake
需要注意的是這里安裝的Cmake版本可能有點(diǎn)低,一般來(lái)說(shuō)都會(huì)比本地Mac的低不少,建議開(kāi)發(fā)的時(shí)候在CMakeLists.txt適當(dāng)降低使用的Camke版本, 當(dāng)然如果一定要使用高版本的Cmake,那么你也可以通過(guò)其他的途徑安裝一下高版本的Cmake即可。
3.安裝rsync
rsync也是需要安裝的,不然在配置Clion進(jìn)行遠(yuǎn)端調(diào)試的時(shí)候會(huì)警告rsync沒(méi)有安裝,同樣使用apt命令安裝即可:
sudo apt-get install rsync x.NETd
自此,遠(yuǎn)端Linux的編譯開(kāi)發(fā)環(huán)境大致就完成了。
三、本地CLion配置
下面我們說(shuō)說(shuō)本地系統(tǒng)的開(kāi)發(fā)工具CLion的配置。
1.配置ToolchAIns
依次打開(kāi) settings -> Build, Execution, Deployment -> Toolchains ,點(diǎn)擊 + 號(hào)
選擇 Remote Host,然后點(diǎn)擊右側(cè)的小齒輪設(shè)置按鈕
2.配置遠(yuǎn)端服務(wù)器信息
在彈出框中點(diǎn)擊 + 號(hào),添加一個(gè)服務(wù)器,在這里我們需要填入你遠(yuǎn)端服務(wù)器的IP、登陸用戶名、登陸密碼等相關(guān)信息。 填寫(xiě)完畢之后點(diǎn)擊一下Test Connection按鈕測(cè)試一下是否能連接成功。
成功連接后點(diǎn)擊確定,系統(tǒng)會(huì)自動(dòng)檢測(cè)遠(yuǎn)程的gcc、Cmake等相關(guān)環(huán)境,如果檢測(cè)成功的話一般就是下圖這樣子的。
此時(shí)我們的CLin就有了兩套編譯環(huán)境,一套是本地的默認(rèn)編譯環(huán)境,一套是遠(yuǎn)端的編譯運(yùn)行環(huán)境,我們想要用那一套環(huán)境就把那套環(huán)境移動(dòng)的第一位即可。
至此我們的環(huán)境配置就完成了,效果如何?趕緊程序員鼻祖工程Hello World走起...
四、環(huán)境測(cè)試
直接在本地使用CLion創(chuàng)建一個(gè)默認(rèn)的Hell World工程,發(fā)現(xiàn)報(bào)錯(cuò)如下:
很明顯本地使用Cmake最低版本要求是3.21,而Linux的遠(yuǎn)端Cmake安裝的版本最高只支持3.18.4,這個(gè)問(wèn)題在之前安裝 Cmake的時(shí)候已經(jīng)提示注意了,要么在CMakeLists.txt降低使用的最低版本,要么升級(jí)遠(yuǎn)端的Cmake,很明顯第一種方式簡(jiǎn)單快捷。
解決掉這個(gè)問(wèn)題后我們偉大的Hello World就能跑起來(lái)啦,筆者點(diǎn)擊運(yùn)行成功后在控制臺(tái)輸出如下:
其中/tmp/tmp.D7BCB8d9w2/cmake-build-debug/HelloTest就是遠(yuǎn)端Linux編譯的結(jié)果產(chǎn)物,我們?cè)谶h(yuǎn)端Linux是可以找到這個(gè)文件的。
同時(shí)我們還可以直接在本地打斷點(diǎn)進(jìn)行調(diào)試,就是這么爽...