Make是許多嵌入式開發(fā)人員使用的基本工具。如果你使用的是供應(yīng)商提供的基于Eclipse的IDE,那么在幕后你使用的是Make。許多使用Visual Studio代碼的開發(fā)人員使用自定義make文件來編譯他們的嵌入式軟件。Make在我們的行業(yè)中無處不在,然而,大約70%的軟件行業(yè)使用CMake。嵌入式開發(fā)者是否應(yīng)該轉(zhuǎn)用CMake?以下是嵌入式開發(fā)人員應(yīng)該放棄Make而采用CMake的兩個(gè)原因。
原因1:改進(jìn)的依賴性管理和模塊化設(shè)計(jì)
CMake中的依賴管理系統(tǒng)簡(jiǎn)直太棒了。使用傳統(tǒng)的makefiles,開發(fā)人員需要手動(dòng)管理依賴項(xiàng),這對(duì)于復(fù)雜的項(xiàng)目來說可能會(huì)變得相當(dāng)混亂。CMake自動(dòng)處理庫(kù)和可執(zhí)行文件之間的依賴關(guān)系!CMake不僅簡(jiǎn)化了過程,還減少了構(gòu)建系統(tǒng)中出現(xiàn)錯(cuò)誤和不一致的機(jī)會(huì)。
今天,許多團(tuán)隊(duì)設(shè)計(jì)他們的嵌入式軟件是為了重用和移植。CMake支持模塊化設(shè)計(jì),允許開發(fā)人員以更有組織的方式構(gòu)建他們的項(xiàng)目。為特定的構(gòu)建選擇包括或排除哪些模塊要簡(jiǎn)單得多。希望使用CI/CD和模擬等現(xiàn)代技術(shù)的開發(fā)人員會(huì)發(fā)現(xiàn)這更容易實(shí)現(xiàn)。
原因2:CTest集成
CTest是作為CMake家族的一部分發(fā)布的測(cè)試工具。它為嵌入式開發(fā)人員提供了運(yùn)行單元測(cè)試和報(bào)告結(jié)果的能力。CMake專注于構(gòu)建過程的自動(dòng)化,而CTest專注于測(cè)試的執(zhí)行,確保構(gòu)建的軟件組件按預(yù)期運(yùn)行。CTest支持多種測(cè)試類型,包括簡(jiǎn)單的單元測(cè)試、更高級(jí)的集成測(cè)試,甚至使用Valgrind等工具進(jìn)行內(nèi)存檢查。
CTest和CMake之間的集成是無縫的。當(dāng)CMake用于配置項(xiàng)目時(shí),它可以生成由CTest自動(dòng)管理的測(cè)試目標(biāo)。這意味著開發(fā)人員可以在構(gòu)建過程中輕松地定義、組織和運(yùn)行他們的測(cè)試,確保從編碼到測(cè)試的流線型工作流程。此外,CTest與儀表板系統(tǒng)CDash很好地集成,允許測(cè)試結(jié)果的可視化,使整個(gè)開發(fā)過程更加高效和透明。
結(jié)論
你使用的構(gòu)建系統(tǒng)可以提高嵌入式軟件的速度和可伸縮性。Make是當(dāng)今幾乎所有嵌入式軟件的基礎(chǔ)。CMake提供了一個(gè)更可配置、更簡(jiǎn)單、更快速的構(gòu)建系統(tǒng)。Make可能對(duì)你來說很好,但是CMake提供的優(yōu)勢(shì)可能會(huì)徹底改變團(tuán)隊(duì)開發(fā)嵌入式軟件的方式。至少,花幾個(gè)小時(shí)調(diào)查一下它的好處是否滿足你的需求是值得的。