C 和 C++ 編程語言構(gòu)建工具變遷

C 語言算是古老、經(jīng)典、長壽的編程語言。從 C 語言的構(gòu)建工具發(fā)展歷程中,可以看出軟件工程中 IDE 和 CI 的發(fā)展軌跡。

C 語言誕生大約在 1972 年,當(dāng)時只有編譯器。

想要將源碼編譯成可執(zhí)行文件或庫文件,需要程序員自己調(diào)用編譯器傳參。

稍微好一點的情況是,程序員可以寫一個批處理腳本來簡化這個過程。

Make

1977 年,Make 誕生了,算是構(gòu)建工具的元老。它方便了程序員管理項目的構(gòu)建過程。

Make 設(shè)計了一種 DSL(領(lǐng)域特定語言)來描述項目的構(gòu)建規(guī)則。程序員只需要編寫 Makefile,就可以通過 make 命令完成構(gòu)建。

AutoTools

時間來到 1991 年,Linux 面世,GNU 計劃也在進行中。

開源軟件興起,想要分發(fā)開源軟件就必須解決多平臺構(gòu)建的問題,不能期望獲得源碼的人有和軟件作者一樣的 C 語言構(gòu)建背景。大家最多知道 make install。

為了簡化這一過程,GNU 推出了 AutoTools。它通過一系列腳本和宏來自動生成 Makefile,從而降低了構(gòu)建的復(fù)雜性。

這一時期的源碼編譯通常是三步:

./configure
make
make install

CMake

時間來到 2000 年,信息化越來越廣,越來越多的業(yè)務(wù)需要編寫軟件去處理,AutoTools 也變得不太好用。

于是,又出現(xiàn)了抽象一層的 CMake。它通過 CMakeLists.txt 來描述項目的構(gòu)建規(guī)則,然后生成細(xì)節(jié)的 Makefile,再通過 make 去構(gòu)建。

Ninja

2010 年,軟件源碼變得更龐大,Make 的性能出現(xiàn)瓶頸。于是,Google 員工設(shè)計了 Ninja,專注于提高構(gòu)建性能。

Ninja 純粹為了提高構(gòu)建效率而設(shè)計,沒有打算做好人機交互,因此需要搭配 CMake 使用。

DevOps

2015 年,云服務(wù)、敏捷開發(fā)、DevOps 流行,大規(guī)模構(gòu)建需求日益增長。

新一代構(gòu)建工具出現(xiàn),配合大規(guī)模的構(gòu)建系統(tǒng)和構(gòu)建資源池,高效完成構(gòu)建工作。

典型的工具有 Bazel、Meson、Buck 等,還有新一代的 C 語言依賴管理方案 Conan。

總結(jié)

C 和 C++ 語言的構(gòu)建工具經(jīng)歷了從簡單到復(fù)雜的演變,反映了軟件工程的進步。隨著 IDE 和 CI/CD 的普及,構(gòu)建過程變得更加高效和可靠。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容