精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

構建C語言開發環境

譯文 精選
開發
在本文中,我們將介紹如何為C語言項目構建容器化開發環境,也將介紹如何使用CMake設置構建系統、使用Unity設置測試環境以及如何在CI流水線中構建容器化環境。

有些C/C++項目開發周期極長。在處理此類項目過程中,構建開發環境就像施展魔法一樣:測試框架被巧妙集成在一起,CI/CD流程將開發者從繁瑣重復的工作中解脫出來。

作為程序員,在開發過程中,我只有一個簡單的愿望:在當前的開發環境中將C庫簡化為少數幾個文件。

在本文中,我們將介紹如何為C語言項目構建容器化開發環境,也將介紹如何使用CMake設置構建系統、使用Unity設置測試環境以及如何在CI流水線中構建容器化環境。

一、現代化開發環境

接下來,我們將展示如何為C項目構建完整的、容器化的開發環境:

  • 創建Docker鏡像作為vscode的開發容器;
  • 基于最小化的Dummy庫,在容器中設置構建庫的工具;
  • 設置靜態代碼分析器clang-tidy檢查代碼是否有常見錯誤;
  • clang-format維持代碼庫的格式保持正常和整潔;
  • 設置Unity,通過在主機上執行Ceedling測試虛擬函數;
  • 最后,我們將設置GitHub工作流,使用本地Docker鏡像執行、構建測試項目。

在本文中,我將使用Docker命令行接口。如果你不明白為什么需要某些參數,建議參考在線文檔。你也可以直接打開GitHub上的示例項目。

二、在Docker中運行程序 

有時,使用嵌入式系統C/C++需要安裝大量專用工具編譯器。如果你正在同時處理不同的項目,版本之間很容易發生沖突。因此,我更傾向于在Docker容器中運行所有程序。

你可以使用Dockerfiles,這能避免在本地安裝工具,任何人都能通過預構建鏡像本地鏡像加入項目。

1.為什么是Docker?存在哪些陷阱?

如果你是Docker新手,需注意以下幾點:

  • Dockerfiles不穩定:昨天構建出的Dockerfile今天就可能無法使用,存在太多的外部依賴關系;
  • Docker不是平臺獨立型的,例如Apple ARM;
  • 某些Docker特性僅在Linux或專用Windows中獲得了支持;例如,并非所有平臺都支持將USB設備安裝到Docker容器之中,這是自2016年以來的限制。

鑒于此,建議你不要將“賭注”“押”在同一項技術上,并且你需要隨時做好切換的準備。

2.讓我們這樣做 

讓我們從零開始,構建空存儲庫

圖片

確保安裝Dockor并順利運行,在項目的根目錄中創建如下內容:builder.Dockerfile

圖片

這個Dockerifle指定了基本鏡像并安裝了一些包,便于在后續步驟中使用。我不會詳細介紹每一個軟件包:在創建鏡像時,你很快就能注意到缺少了什么,可以擴展軟件包列表,重要的是以下幾點:

  • 對于基本圖像,我強烈建議使用特定標簽。apt包在基本鏡像之間變化很大,選擇標記可以為你節省更多時間;
  • 我傾向于在鏡像開發過程中使用特定平臺 ,這一點對后續開發步驟的順利進行很重要。

如果不使用vscode,也可以指定不同的鏡像。在本文中,我們將使用vscode,也將堅持使用Dev容器所支持的鏡像。

鏡像是用如下的命令構建出來的,執行起來可能需要一點時間:

圖片

3.詳細命令行調用的快捷方式 

Docker命令非常冗長,因此,我通常將常用命令放在makefile項目根目錄中。假設安裝make后可進行如下操作:

圖片

現在,執行如下操作重建鏡像:

圖片

讓我們從圖像中旋轉容器并進行測試:

圖片

當使用apt時,已安裝的工具版本取決于基礎鏡像,也取決于包注冊表。如果需要安裝特定的版本,可以通過執行自定義的RUN命令。

三、Visual Studio代碼開發容器 

沒有在本地安裝所有工具的缺點是:你選擇的IDE無法利用這些工具,例如,當使用vscode時,如果沒有安裝編譯器,你將無法正確設置智能提示或任何其它的輔助程序

vscode允許你在開發容器中運行編輯器。這也是我們選擇將mcr.microsoft.com/vscode/devcontainers/base當作基礎圖像的原因:我們可以在容器中鏈接到vscode,因此所有工具都將被安裝在Docker鏡像中。

值得注意的是,vscode實例與本地vscode安裝不匹配,與遠程實例非常相似。

通過創建.devcontainer/devcontainer.json文件,我們可以讓vscode使用新構建的圖像作為開發容器,還可以在vscode實例中安裝3個擴展,通過使用 customizations.extensions字段中的devcontainer.json配置文件:

圖片

如果你從現在開始重新加載窗口或重新打開vscode,vscode應該會詢問你是否需要使用檢測到的開發容器。

圖片

需要一段時間為vscode設置你的容器安裝擴展,并用vscode連接到Linux容器

圖片

四、系統架構 

我們將使用CMake構建單獨的.c和.h對。

圖片

圖片

CMakeLists.txt簡單定義了名為“Dummy”的庫,并將相應的文件添加到庫中。

重要的是:這已在開發容器和vscode中被構建出來了!在你的遠程實例中打開集成終端并執行CMake,如下所示:

圖片

五、安裝clang工具:格式化和靜態代碼分析

C和C++的靈活性也伴隨著大量“footguns”的出現;因此,我嘗試在項目中添加至少一個最小的靜態代碼分析任務,這有助于發現最明顯的錯誤。市面上有很多工具,但到目前為止,我個人更偏愛clang-tidy。

另外,在代碼庫上進行協作時,格式化器極好;當我們在安裝clang-tidy時,不妨繼續安裝clang-format。

你需要將兩個配置文件clang-format和.clang-tidy放置到項目根目錄中,以便任何IDE都能自動拾取它們:

圖片

六、添加單元測試框架

我們已經能夠構建并分析庫,還提供了格式化功能。在開發環境中,我們還需要一個單元測試框架

在本文中,我選擇了Unity測試框架,通過Ceedling在主機上執行。順便說一句,使用這個框架便于嵌入式系統在目標硬件上執行任務。

1.安裝Unity和Ceedling 

在構建者鏡像的第一步中,我們已經安裝了ruby,所以,安裝單元測試工具變得更加簡單:

圖片

重建鏡像后,我們就可以開始了!

圖片


2.配置Unity和運行單元測試 

簡而言之,你需要在一個專門的unity_config.h文件中將配置開關設置為Unity并配置Ceedling與project.yml. Ceedling,為你生成所有的測試運行程序。

你需要做的就是添加你的測試文件,然后“告訴”Ceedling如何檢測它們:

圖片

然后,我們可以創建第一個單元測試tests/unittest/test/test_dummy.c:

圖片

七、結論

到這里,所有的工作就都完成了,包括庫的構建等,報告也可以使用了。神奇的是,所有這些操作都不會使計算機因工具而“堵塞”

圖片

最后,值得一提的是:有了Docker桌面,你不僅可以輕松檢查圖像漏洞,還能檢查Dockerfile中的每一步:

圖片

現在,你已具備在GitHub上用CI設置容器化C/C++項目的所有技能。有了這項技能,你能輕松地在文檔中添加特定編譯器清理設置CI時出現的所有錯誤

責任編輯:龐桂玉 來源: 51CTO技術棧
相關推薦

2011-06-03 13:38:49

Android 開發環境

2010-09-14 09:24:29

C語言

2014-08-11 10:15:01

Docker開發環境

2009-07-09 15:31:23

構建Python開發環

2013-05-14 09:54:27

Android開發開源開發環境

2009-07-14 13:14:13

2011-11-21 15:45:28

CGI

2010-06-12 16:29:00

BlackBerry開

2014-01-07 10:36:32

EclipsSpark

2009-08-24 09:55:24

C#集成開發環境

2010-09-15 09:00:21

MeeGo TouchQT SDKMeeGo

2015-01-22 09:06:31

Docker云計算云應用

2020-03-17 17:49:58

C語言編程語言

2020-03-18 12:23:49

C語言編程語言

2010-01-14 16:54:02

C++開發環境

2010-01-18 15:19:41

Visual C++開

2010-01-15 09:58:38

C++ Builder

2013-04-08 15:52:06

Go語言

2011-09-21 09:26:31

虛擬化虛擬測試開發環境

2010-11-09 09:51:52

匯編語言
點贊
收藏

51CTO技術棧公眾號

日韩精品久久久久久福利| 久久久精品蜜桃| 精品国模在线视频| 一区二区三区视频在线观看免费| 无遮挡的视频在线观看| 久久精品国产亚洲a| 日韩三级影视基地| 亚洲精品乱码久久久久久蜜桃欧美| 久草在线视频资源| 久久久午夜精品| 97操在线视频| 97人妻一区二区精品视频| 亚洲精品成人影院| 国产视频一区在线| 亚洲精品在线网址| 深夜视频一区二区| 亚洲香肠在线观看| 亚洲电影免费| 台湾av在线二三区观看| 国产中文一区二区三区| 欧美亚洲另类在线| 日韩欧美中文字幕视频| 久久99国产精品视频| 日韩一区二区三区在线视频| 国内外免费激情视频| 免费在线中文字幕| 亚洲视频中文字幕| 日本一区免费观看| 午夜小视频在线播放| 精品影院一区二区久久久| 日韩av电影在线播放| 久久中文字幕在线观看| 91亚洲一区| 夜夜嗨av一区二区三区免费区| youjizz.com日本| av日韩久久| 精品视频色一区| 久久久久久久久久久久久国产精品| 欧美人与动牲性行为| 最新国产精品久久精品| 一级日韩一区在线观看| 国产乱视频在线观看| 91亚洲国产成人精品一区二区三| 成人资源视频网站免费| 国产男女无套免费网站| 精品一二三四区| 国产精品免费一区二区三区都可以| 国产成人在线视频观看| 日韩视频在线一区二区三区 | 青青免费在线视频| 成人教育av在线| 动漫美女被爆操久久久| 国产肥老妇视频| 国产精品羞羞答答xxdd| 91成人在线看| 成人1区2区3区| 国产高清在线精品| www.成人三级视频| 丰满人妻一区二区三区免费视频 | 国产伦精品一区二区三区视频黑人 | 国产在线激情视频| 最近日韩中文字幕| 无码人妻精品一区二区三区99v| av在线免费一区| 国产精品久久久久久户外露出 | 日韩欧美亚洲国产一区| 久久久久久久激情| 欧美性xxx| 欧美视频自拍偷拍| av亚洲天堂网| 欧美高清hd| 精品国产一二三区| 性欧美丰满熟妇xxxx性久久久| 超碰国产精品一区二页| 日韩欧美一二区| 日批在线观看视频| 精品日本12videosex| 色综合亚洲精品激情狠狠| 成人涩涩小片视频日本| 136国产福利精品导航网址| 97视频在线播放| 少妇久久久久久久| 国产一区二区精品久久99| 国产精品麻豆免费版| 亚洲色图欧美视频| 国产精品三级av在线播放| 久久久无码中文字幕久...| 国产美女一区视频| 欧美最新大片在线看| 日批视频在线看| 首页亚洲中字| 久久九九免费视频| 亚洲免费在线观看av| 青娱乐精品在线视频| 91精品天堂| 欧美视频免费一区二区三区| 国产精品久久久久久久蜜臀| 97在线国产视频| 电影在线观看一区二区| 91麻豆精品国产91久久久久久久久| 邪恶网站在线观看| 欧美美女黄色| 久久成人这里只有精品| 久久久久久少妇| 国产乱码精品一区二区三| 久久久久综合一区二区三区| 国产黄大片在线观看画质优化| 五月天丁香久久| 黄色aaaaaa| 国产99亚洲| 久久99久久亚洲国产| 午夜一级黄色片| 成人精品一区二区三区中文字幕| 天堂av一区二区| 欧美日韩在线观看首页| 日韩三级av在线播放| 黄色av免费播放| 亚洲一区二区免费看| 春色成人在线视频| 日韩伦理在线观看| 色视频欧美一区二区三区| 精品国产一二区| 欧美激情欧美| 国产精品入口日韩视频大尺度| 三级在线观看网站| 亚洲综合色婷婷| www.国产福利| 日韩国产欧美| 国产精品99免视看9| 天堂在线视频观看| 一区二区三区欧美日| 日韩av加勒比| 日韩av免费大片| 国产精品久久久久久久久粉嫩av| 手机看片一区二区三区| 一区二区国产盗摄色噜噜| 超碰人人草人人| 日本女优一区| 国产精品成熟老女人| 韩国福利在线| 欧美午夜激情视频| 成年人网站免费看| 国产亚洲一级| 裸模一区二区三区免费| 国产直播在线| 日韩成人在线电影网| 国产精品theporn动漫| 高清视频一区二区| 免费人成在线观看视频播放| 中文字幕区一区二区三| 欧美伦理91i| 成人乱码一区二区三区| 亚洲午夜成aⅴ人片| av电影在线播放| 亚洲高清不卡| 久久久久久久有限公司| 中文字幕影音在线| 亚洲午夜未满十八勿入免费观看全集| 一级片在线观看免费| 国产视频一区在线观看 | 国产一区二区在线影院| 三年中文高清在线观看第6集 | 欧美三级欧美一级| 色婷婷国产精品免| 极品少妇xxxx精品少妇偷拍 | 久久久国产一级片| 久久99精品久久久| 国产制服91一区二区三区制服| 精品中文字幕一区二区三区| 欧美大片在线影院| 婷婷五月综合激情| 91福利资源站| 亚洲 欧美 变态 另类 综合| 高清不卡在线观看av| 国产一区二区网| 欧美色爱综合| av噜噜色噜噜久久| 色在线视频观看| 视频在线观看一区二区| www.好吊色| 日韩欧美国产一区二区| 国产极品美女在线| 91原创在线视频| 我要看一级黄色大片| 天堂av在线资源| 亚洲永久精品一区| 日本午夜精品理论片a级app发布| tube国产麻豆| 视频在线不卡| 亚洲综合久久久| 99久久人妻无码中文字幕系列| 久久精品一区二区三区中文字幕| 亚洲韩国在线| 大型av综合网站| 国产精品大陆在线观看| a级网站在线播放| 精品视频www| 亚洲自拍第二页| 亚洲高清在线视频| 91香蕉国产视频| 99国产精品一区| 欧美日韩理论片| 久久久久国产一区二区| 欧美a级免费视频| 欧美日韩色图| 好吊妞www.84com只有这里才有精品| 成人在线视频免费| 国产91精品久久久久久久| 成人a在线视频免费观看| 亚洲欧美日韩爽爽影院| 午夜精品无码一区二区三区 | 久草精品视频在线观看| 日本一区二区视频在线| 亚洲国产第一区| 国产成人综合视频| 香港日本韩国三级网站| 一本色道久久综合| 青草视频在线观看视频| 91综合网人人| 欧洲一区二区日韩在线视频观看免费| 在线视频亚洲欧美中文| 91久久精品国产| 国产极品一区| 青草青草久热精品视频在线网站 | 97中文字幕在线观看| 奇米精品一区二区三区在线观看一| 日本福利视频在线| 在线播放不卡| 欧美极品少妇无套实战| 中文字幕一区二区av| 在线免费观看成人| 欧美视频免费| 国产亚洲欧洲一区高清在线观看| 亚洲色图在线播放| 欧美亚洲另类视频| 日韩a在线观看| 精品国产乱码久久久久久蜜臀| 亚洲视频在线观看免费视频| 色8久久人人97超碰香蕉987| 日本三级片在线观看| 一区二区三区产品免费精品久久75| 永久免费看mv网站入口| 国产精品无遮挡| 国产农村妇女精品一区| 欧美国产精品一区| 极品蜜桃臀肥臀-x88av| 国产视频一区在线观看| 国产三级av在线播放| 久久久久久久久久看片| 久久久久久久久久久国产精品| 成人免费毛片高清视频| 美女搡bbb又爽又猛又黄www| eeuss鲁片一区二区三区在线观看| 精品无码人妻少妇久久久久久| 粉嫩av一区二区三区在线播放 | 国产成人激情av| 少妇精品无码一区二区| 成人午夜精品在线| 手机在线成人av| 26uuu精品一区二区在线观看| 亚洲男人在线天堂| 久久综合九色综合97_久久久| 丰满少妇在线观看资源站| 国产欧美一区二区精品久导航| 欧美黄色高清视频| 一区在线观看视频| 黄色一级片在线| 精品女同一区二区三区在线播放| 69视频免费在线观看| 色视频成人在线观看免| 国产又黄又粗又长| 欧美一级xxx| 手机看片一区二区| 亚洲一区二区久久| 黄色网页在线播放| 久久久久久香蕉网| 性欧美18一19sex性欧美| 国产情人节一区| 日本免费精品| 久久久亚洲综合网站| 97人人精品| 欧美视频免费看欧美视频| 日韩一区欧美二区| 永久免费黄色片| 26uuu国产一区二区三区| 国产成人精品视频免费| 一区二区三区产品免费精品久久75| 日韩欧美中文字幕一区二区| 在线观看视频一区二区| 精品国产黄色片| 亚洲欧洲美洲在线综合| 大片免费在线看视频| 97在线精品国自产拍中文| 精品久久福利| 国产伦精品一区二区三区高清版 | 人人妻人人澡人人爽欧美一区| 亚洲美女一区| 激情五月婷婷基地| 99久久免费精品高清特色大片| 成人免费视频入口| 午夜视频在线观看一区二区三区| 伊人网视频在线| 亚洲精品短视频| 超鹏97在线| 国产99视频在线观看| 136福利精品导航| 亚洲精品无人区| 亚洲一区激情| 色婷婷狠狠18禁久久| 国产精品国产三级国产普通话蜜臀| 国产精品7777| 日韩欧美电影一区| av在线电影播放| 日本成人在线视频网址| 91欧美极品| 欧美日韩在线免费观看视频| 天堂va蜜桃一区二区三区漫画版| 欧美熟妇精品一区二区| 国产精品美女久久久久久| 日韩欧美成人一区二区三区| 91精品国产91综合久久蜜臀| seseavlu视频在线| 欧美在线视频一区| 最新国产精品精品视频| 亚洲精品二区| 日韩电影在线免费| 精品人妻少妇嫩草av无码| 亚洲不卡在线观看| 99久久久久久久| 久久九九国产精品怡红院 | 欧美xxxooo| 欧美在线免费播放| 亚洲欧美综合在线观看| 久久久亚洲网站| 91午夜精品| 每日在线观看av| 成人黄色一级视频| 久久国产精品波多野结衣| 欧美一区二区成人6969| 黄色一级大片在线免费看产| 国产欧美日韩综合精品| 红桃成人av在线播放| 欧美两根一起进3p做受视频| 2014亚洲片线观看视频免费| 亚洲永久精品在线观看| 日韩电视剧免费观看网站| 欧美a级在线观看| 免费在线成人av| 免费视频一区| 免费看91的网站| 欧美日韩视频专区在线播放| 午夜免费福利在线观看| 国产日韩中文在线| 66久久国产| 国产调教打屁股xxxx网站| 亚洲第一成人在线| 亚洲欧美日本在线观看| 国产97在线播放| 日韩欧美一区免费| 亚洲一二区在线观看| 亚洲国产人成综合网站| 免费观看黄一级视频| 51色欧美片视频在线观看| 中文有码一区| 黄色在线视频网| 专区另类欧美日韩| 亚洲免费国产视频| 欧美性受xxx| 久久美女精品| 天天操夜夜操很很操| 亚洲图片欧美色图| 日韩a级作爱片一二三区免费观看| 国产精品美女久久久免费| 亚州av乱码久久精品蜜桃| 农村末发育av片一区二区| 欧美日韩国产色| 成年人在线免费观看| 91亚洲精品视频| 在线欧美福利| 久操视频免费看| 欧美狂野另类xxxxoooo| av中文字幕在线看| 日韩高清三级| 国产精品一二一区| 久久精品无码av| 久久五月天色综合| 欧亚精品一区| 日韩成人精品视频在线观看| 亚洲第一狼人社区| 国产大片在线免费观看| 91视频免费进入| 美女黄色成人网| www.99re7| 亚洲桃花岛网站| 亚洲国产中文在线| 国产v亚洲v天堂无码久久久| 亚洲黄色免费电影| 国产精品影院在线| 国产一区自拍视频| 国产制服丝袜一区|