隨著專案的成長,規模不斷擴大,我遇到了許多問題。以前,我只專注於如何快速解決bug,而忽略了CMake如何建構一個專案的原理。因此,我決定使用這30天時間,深入學習如何運用CMake來打造個人的C/C++專案,順便還一下以前欠下的知識債(Knowledge Debt)。
這個旅程是以開發專案的視角來學習CMake,但是將不僅限於CMake的使用,我也會分享在開發專案過程中遇到的問題以及解決方案。
在學校的程式相關課程中(資料結構、演算法、物件導向、C/C++程式設計 ...),都沒有使用過Github裡面的開源專案來協助開發,直到大三開始製作實務專題時才...
作業系統 ubuntu 22.04,Linux的任一發行版本應該都行。雖然CMake的主要功能之一是可以跨平台開發,但是目前我還沒有這方面的經驗,因此本系列不會...
在學習如何建構一個專案之前,必須了解編譯的各個流程,因為一個專案從原始碼階段開始到最後產生出來的執行檔,這中間經過的編譯流程需要我們自行定義CMake的指令來控...
今天會說明make, cmake, makefile, CMakeLists.txt與g++之間的關係,並解釋為什麼要使用CMake。 $ git clone...
今天就要寫出第一個CMake值專案啦!主要流程和上一篇介紹的流程一樣。先使用CMake讀取CMakeLists.txt後生成Makefile, 接下來用Make...
在專案中為了更容易擴充、維護專案,都會將原始碼拆分成多個檔案,並使用資料夾分門別類放好,例如存放標頭檔的include資料夾、原始碼的src資料夾,還有專門存放...
當我們將專案中的程式碼依照各自的的功能分開成不同的檔案時,常常會遇到在不同的原始碼間共用變數的需求,這個時候C/C++提供了一個方便的關鍵字:extern,但是...
一開始在剛接觸專案時,我就對標頭檔的開頭都會有#ifndef、 #define,結尾也都有#endif這個現象感到好奇,為什麼會有這種固定的寫法呢?查了一下,原...
當專案規模越來越大,會需要許多子目錄以便管理程式碼,通常每一個子目錄都要有自己的CMakeLists.txt負責處理該目錄的檔案,因此本篇會介紹如建立與管理子目...
什麼是庫 庫是寫好的現有的,成熟的,可以復用的二進制檔案。現實中每個專案都要依賴很多基礎的底層庫(iostream, vector, sys/resource....