1. 程式人生 > 程式設計 >HELLO CMAKE-內部構建、外部構建

HELLO CMAKE-內部構建、外部構建

Hello CMake: 最常用的 CMAKE 用法

CMake

CMake是個一個開源的跨平臺自動化建構系統,用來管理軟體建置的程式,並不依賴於某特定編譯器,並可支援多層目錄、多個應用程式與多個庫。 它用配置檔案控制建構過程(build process)的方式和Unix的make相似,只是CMake的配置檔案取名為CMakeLists.txt。CMake並不直接建構出最終的軟體,而是產生標準的建構檔(如Unix的Makefile或Windows Visual C++的projects/workspaces),然後再依一般的建構方式使用。

在Linux上,CMake 通過 CMakeLists.txt

用相較 Makefile 更簡單的語法生成 Makefile,之後使用 make 命令進行編譯,make install 命令進行安裝。

Make 工具除了 CMake 還有個比較好用的的管理 QT 工程的叫做 qmakeqmake 在學習的難度上相較 CMake要小的多,並且有輕量級的IDE QT Creator可以方便進行管理,關於 qmake 的使用,我會在後續的部落格更新中講解。

下面我來為大家介紹下我們在使用 CMake 時最常用的管理方式。

個人如何在 linux 使用 CMake 管理工程

一般沒有針對CMake的IDE,我們可以純手敲,它有點兒像是在寫程式碼,稍微容易點。我通常使用 VSCode

或者ATOM等編譯器,直接開啟工程的根目錄,然後便可以看到資料夾下的原始碼檔案,並且還可以比較簡單美觀的寫程式碼。

內部構建和外部構建,選擇哪個?

cmake 在執行時,會生產大量臨時檔案,如果直接在程式碼根目錄執行cmake .命令,相信會看到比程式碼本身更多的臨時檔案。

如上圖,所有的臨時檔案直接出現在程式碼原始檔夾,非常的不美觀,而解決這種情況,一般的操作是外部構建

外部構建,通過在原始檔夾外建立一個新的用於放置編譯中間檔案的資料夾,所有生成的工程管理臨時檔案、編譯臨時檔案、編譯最終生成檔案都在該資料夾中。 一般情況下外部構建的操作如下:

mkdir build # 建立一個新資料夾
cd ./build # 進入該資料夾路徑 cmake .. # 構建工程管理臨時檔案 make # 編譯 make install # 安裝編譯好的工程到指定路徑 複製程式碼

如上圖,所有的臨時檔案都放置的在 build 資料夾中,如果需要調整,直接將 build 刪除即可。對於版本管理工具git來講,可以直接在.gitignore檔案中加入一行build/以遮蔽對 build 資料夾的版本控制。build 資料夾內生成的檔案如下圖所示。

Reference

  1. 程式碼樣例
  2. CMake Partice
  3. Wikipedia