iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
Software Development

建構屬於自己的C/C++專案 : 我的30天CMake學習之旅 系列

隨著專案的成長,規模不斷擴大,我遇到了許多問題。以前,我只專注於如何快速解決bug,而忽略了CMake如何建構一個專案的原理。因此,我決定使用這30天時間,深入學習如何運用CMake來打造個人的C/C++專案,順便還一下以前欠下的知識債(Knowledge Debt)。
這個旅程是以開發專案的視角來學習CMake,但是將不僅限於CMake的使用,我也會分享在開發專案過程中遇到的問題以及解決方案。

參賽天數 29 天 | 共 29 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 1

[Day 1] 簡介與目錄

在學校的程式相關課程中(資料結構、演算法、物件導向、C/C++程式設計 ...),都沒有使用過Github裡面的開源專案來協助開發,直到大三開始製作實務專題時才...

2023-09-15 ‧ 由 kevin6231123 分享
DAY 2

[Day 2] 執行環境說明

作業系統 ubuntu 22.04,Linux的任一發行版本應該都行。雖然CMake的主要功能之一是可以跨平台開發,但是目前我還沒有這方面的經驗,因此本系列不會...

2023-09-16 ‧ 由 kevin6231123 分享
DAY 3

[Day 3] 編譯流程

在學習如何建構一個專案之前,必須了解編譯的各個流程,因為一個專案從原始碼階段開始到最後產生出來的執行檔,這中間經過的編譯流程需要我們自行定義CMake的指令來控...

2023-09-17 ‧ 由 kevin6231123 分享
DAY 4

[Day 4] 工具程式比較

今天會說明make, cmake, makefile, CMakeLists.txt與g++之間的關係,並解釋為什麼要使用CMake。 $ git clone...

2023-09-18 ‧ 由 kevin6231123 分享
DAY 5

[Day 5] 第一個CMake專案

今天就要寫出第一個CMake值專案啦!主要流程和上一篇介紹的流程一樣。先使用CMake讀取CMakeLists.txt後生成Makefile, 接下來用Make...

2023-09-19 ‧ 由 kevin6231123 分享
DAY 6

[Day 6] 編譯多檔案與檔案架構

在專案中為了更容易擴充、維護專案,都會將原始碼拆分成多個檔案,並使用資料夾分門別類放好,例如存放標頭檔的include資料夾、原始碼的src資料夾,還有專門存放...

2023-09-20 ‧ 由 kevin6231123 分享
DAY 7

[Day 7] 定義與宣告—多檔案共用變數

當我們將專案中的程式碼依照各自的的功能分開成不同的檔案時,常常會遇到在不同的原始碼間共用變數的需求,這個時候C/C++提供了一個方便的關鍵字:extern,但是...

2023-09-21 ‧ 由 kevin6231123 分享
DAY 8

[Day 8] Define Guard

一開始在剛接觸專案時,我就對標頭檔的開頭都會有#ifndef、 #define,結尾也都有#endif這個現象感到好奇,為什麼會有這種固定的寫法呢?查了一下,原...

2023-09-22 ‧ 由 kevin6231123 分享
DAY 9

[Day 9] 子目錄

當專案規模越來越大,會需要許多子目錄以便管理程式碼,通常每一個子目錄都要有自己的CMakeLists.txt負責處理該目錄的檔案,因此本篇會介紹如建立與管理子目...

2023-09-23 ‧ 由 kevin6231123 分享
DAY 10

[Day 10] 靜態庫與動態庫

什麼是庫 庫是寫好的現有的,成熟的,可以復用的二進制檔案。現實中每個專案都要依賴很多基礎的底層庫(iostream, vector, sys/resource....

2023-09-24 ‧ 由 kevin6231123 分享