翻譯|使用教程|編輯:吳園園|2020-01-20 10:24:06.670|閱讀 4426 次
概述:CLion是一款專(zhuān)為開(kāi)發(fā)C及C++所設(shè)計(jì)的跨平臺(tái)IDE。本篇教程將為您介紹如何將Docker與CLion結(jié)合使用。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
CLion是一款專(zhuān)為開(kāi)發(fā)C及C++所設(shè)計(jì)的跨平臺(tái)IDE。它是以IntelliJ為基礎(chǔ)設(shè)計(jì)的,包含了許多智能功能來(lái)提高開(kāi)發(fā)人員的生產(chǎn)力。這種強(qiáng)大的IDE幫助開(kāi)發(fā)人員在Linux、OS X和Windows上來(lái)開(kāi)發(fā)C/C++,同時(shí)它還使用智能編輯器來(lái)提高代碼質(zhì)量、自動(dòng)代碼重構(gòu)并且深度整合CMake編譯系統(tǒng),從而提高開(kāi)發(fā)人員的工作效率。
我們得到的常見(jiàn)問(wèn)題之一是,為什么CLion中沒(méi)有Docker集成?實(shí)際上,CLion與Docker配合得很好!可能還沒(méi)有一個(gè)特定的“使用Docker”按鈕-但是,即使您是Docker新手,您自己進(jìn)行設(shè)置實(shí)際上也非常簡(jiǎn)單明了!
請(qǐng)繼續(xù)閱讀,或觀看內(nèi)容相同的視頻:
為什么要使用Docker?
但是,您為什么要這樣做呢?Docker不僅是最新趨勢(shì),而且代表了一種以快速,輕松,可重現(xiàn)和可靠的方式設(shè)置不同環(huán)境的新方法,例如,易于共享,例如在版本控制中。
C ++開(kāi)發(fā)人員的常見(jiàn)用法是:使用多個(gè)工具鏈(尤其是同一編譯器的不同版本–否則很難維護(hù)),使用用于不同平臺(tái)的交叉編譯器,甚至只是使用單個(gè)環(huán)境但使它變得容易讓團(tuán)隊(duì)中的每個(gè)人都可以快速輕松地獲得相同的環(huán)境(并保持更新)。
Docker的重量比VM輕,但實(shí)際上提供了相同級(jí)別的隔離。設(shè)置聽(tīng)起來(lái)很復(fù)雜,但是許多人感到驚訝的是,上手如此簡(jiǎn)單。
創(chuàng)建一個(gè)與CLion一起使用的Docker容器。
Docker容器在Dockerfile中進(jìn)行了描述。它們看起來(lái)像簡(jiǎn)單的腳本,但是具有一些特殊的屬性,使它們有些特殊。
首先,您可以引用“基礎(chǔ)映像”,它是一個(gè)預(yù)先構(gòu)建的容器,通常可以通過(guò)docker Registry獲得,它完成了很多繁重的工作。我們將使用Ubuntu基本映像為我們提供一個(gè)通用的平臺(tái)開(kāi)始,但其他OS映像也可用。例如
FROM ubuntu:18.04
其次,在Dockerfile每一行是在什么碼頭工人調(diào)用執(zhí)行層。一旦創(chuàng)建,每個(gè)層都是不可變的,因此可以輕松且廉價(jià)地回滾上一層的任何突變,而無(wú)需重新創(chuàng)建下層的所有層。
一旦習(xí)慣了,這就是使Docker成為如此快速且高效的環(huán)境的原因之一。在這里,我們將不再深入。
我們已經(jīng)創(chuàng)建了一個(gè)參考Dockerfile供您入門(mén)。如何更改它以滿(mǎn)足您的需求應(yīng)該很明顯。
通常,您將更改該apt-get部分,如果您以前使用過(guò)Ubuntu,則應(yīng)該立即熟悉。當(dāng)然,如果您更改基本映像,則可能需要使用其他方法來(lái)獲取依賴(lài)關(guān)系。關(guān)鍵是它只是使用基本映像操作系統(tǒng)的軟件包管理器(在Docker RUN命令中)。
您可能還可以獲?。ɑ騽?chuàng)建自己)具有所有依賴(lài)項(xiàng)的基本映像。
RUN apt-get update \ && apt-get install -y ssh \ build-essential \ gcc \ g++ \ gdb \ clang \ cmake \ rsync \ tar \ python \ && apt-get clean然后,Dockerfile會(huì)設(shè)置SSH,以便CLion可以連接到其中,并創(chuàng)建供CLion使用的用戶(hù)。
RUN useradd -m user && yes password | passwd user
通常,憑據(jù)不必太晦澀難懂,但是您當(dāng)然可以在需要時(shí)更改它們–或使用另一種方式(超出本介紹的范圍)來(lái)指定細(xì)節(jié),而無(wú)需在Dockerfile中提及它們。
在Dockerfile頂部的注釋中,是構(gòu)建和運(yùn)行此Docker容器所需執(zhí)行的三個(gè)命令。
第一個(gè)構(gòu)建容器:
docker build -t clion/remote-cpp-env:0.5 -f Dockerfile.remote-cpp-env .
運(yùn)行此過(guò)程需要幾分鐘,因?yàn)樗鼤?huì)下載Ubuntu映像(無(wú)論您是否已經(jīng)在Ubuntu上運(yùn)行),將其“安裝”到第一層,安裝所有依賴(lài)項(xiàng)(即apt-get行),設(shè)置SSH和創(chuàng)建用戶(hù)!鑒于所有這些,它出奇的快(您只需要這樣做一次)。
構(gòu)建完成后,您可以使用下一行運(yùn)行容器:
docker run -d --cap-add sys_ptrace -p127.0.0.1:2222:22 --name clion_remote_env clion/remote-cpp-env:0.5
將-d容器作為守護(hù)程序運(yùn)行,因此控件將返回給您。
--cap-add sys_ptrace添加了ptrace功能,這對(duì)于調(diào)試是必需的。默認(rèn)情況下,Docker容器通常非常小,因此有時(shí)您需要啟用基本功能。
-p2222:22指定端口映射。容器內(nèi)部的端口22(默認(rèn)SSH端口)映射為容器外部,作為主機(jī)環(huán)境上的端口2222。
2222沒(méi)什么特別的。加倍或乘以10是表示映射端口的常用方法,但是您可以在此處指定任何可用的端口號(hào)。如果您打算并行運(yùn)行多個(gè)容器(例如,以支持備用工具鏈),則這將很有用。
無(wú)論您選擇什么端口號(hào),因?yàn)樗皇桥R時(shí)映射的,并且可以重用,所以通常值得清除所有緩存的SSH密鑰:
ssh-keygen -f "$HOME/.ssh/known_hosts" -R [localhost]:2222"
不用擔(dān)心,如果它告訴您找不到任何東西(可能是第一次)。
因此,現(xiàn)在Docker容器已啟動(dòng)并正在運(yùn)行,并已安裝工具鏈。剩下的就是讓CLion使用它。
在Docker上使用遠(yuǎn)程開(kāi)發(fā)工作流程
由于我們?cè)谌萜髦性O(shè)置了SSH,因此可以使用CLion的標(biāo)準(zhǔn)遠(yuǎn)程開(kāi)發(fā)功能將其連接到其中。有關(guān)設(shè)置完全遠(yuǎn)程模式的完整詳細(xì)信息,請(qǐng)參見(jiàn)我們的幫助頁(yè)面。
簡(jiǎn)而言之,您應(yīng)該在“ 構(gòu)建”,“執(zhí)行”,“部署”下的設(shè)置中將新的“ 工具鏈”條目添加為“ 遠(yuǎn)程主機(jī)”類(lèi)型。
然后單擊“ 憑據(jù)”部分中的,并填寫(xiě)我們?cè)贒ockerfile中設(shè)置的SSH憑據(jù)(主機(jī): localhost,端口: 2222,用戶(hù)名: user,密碼 :)password。
最后,添加使用此工具鏈的CMake配置文件,您就完成了。如果要對(duì)容器內(nèi)使用的路徑進(jìn)行更精細(xì)的控制,請(qǐng)查看“部署設(shè)置”頁(yè)面。
不管哪種方式,一旦您提交了設(shè)置(Apply和/或OK),并等待CMake配置文件加載和文件傳輸,您都可以從Run Config下拉列表中選擇CMake配置文件,您的代碼將現(xiàn)在可以使用指定的工具鏈在容器內(nèi)進(jìn)行編譯,運(yùn)行和調(diào)試。
如果容器的CMake版本早于本地項(xiàng)目(并且您首先在本地創(chuàng)建了該項(xiàng)目),則可能需要在CMakeLists.txt文件頂部重新設(shè)置CMake版本。
您還可以在Dockerfile中獲得更高版本的CMake,但這超出了本文的范圍。
改變Docker環(huán)境
如果您需要更改容器,則可能還需要重新運(yùn)行構(gòu)建步驟。請(qǐng)確保查閱Docker文檔,因?yàn)橛捎贒ocker的廣泛緩存(通常是一件好事),更改是否生效并不總是很明顯。
如果您要重建,則可能還必須重新加載CMake項(xiàng)目。
=====================================================
想要購(gòu)買(mǎi)Clion正版授權(quán)的朋友可以。
更多精彩內(nèi)容,敬請(qǐng)關(guān)注下方的微信公眾號(hào),及時(shí)獲取產(chǎn)品最新資訊▼▼▼
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: