這篇文章提供了一個簡潔易懂的 cmake 工程模板,可以滿足一個小團隊的合作開發,無論是在代碼安全性,還是開發效率上,都能滿足基本的開發需求。
本文詳細描述了文件結構和操作流程,如何在Linux系統使用命令行來編譯,如何在Windows系統中使用VSCode 和Visual Studio 2019來進行開發和編譯。
使用這個cmake模板之后,代碼的結構非常的清晰,編譯過程中產生的中間文件也不會污染源代碼。
無論是開發一些個人項目,或者是在一些小團隊中使用是綽綽有余了。
示例代碼中核心的兩個文件就是:app.cmake和lib.cmake,幾乎每一行都有注釋。
文末有下載鏈接。
文件目錄說明
在團隊開發工作中,每個人負責不同的模塊。
從代碼保密的角度看,除了項目負責人(或者說項目整合人員)有權限獲取一個項目中的所有代碼之外,每個開發者通常只擁有自己負責的模塊。
每個開發者在編譯自己的模塊時,需要把輸出文件(頭文件、庫文件、文檔)等,匯總到一個中央倉庫中,方便整合人員進行集成編譯。
因此,示例代碼如下圖所示:
CMakeLists.txt:是最外層的 cmake 文件;
install:是所有模塊編譯結果的安裝目錄,便于項目整合人員集成編譯;
myapp:是一個可執行程序的模板;
mymath:是一個動態鏈接庫的模板;
再來看一下mymath內部的文件組織結構:
build:存放編譯過程中產生的中間文件,不會污染源代碼。當然了,如果使用 git 來進行版本管理,需要把這個目錄添加到 .gitignore 文件中;
lib.cmake:比較重要的 cmake 文件,這個模板的核心價值就在這個文件中;
source:存放源代碼,并且區分了 linux 和 windows 系統,在不同的系統上編譯,會自動編譯對應目錄下的 C 文件;
include:存放頭文件;
myapp目錄內部結構與mymath幾乎是一樣的,這里就不贅述了。
這兩個模塊的編譯結果會自動輸出到install目錄,如下圖所示:
在install目錄內:
include:匯總了所有模塊的頭文件;
library:匯總了所有模塊輸出的庫文件;
bin:匯總了所有的可執行程序(一些單元測試程序根據自己的需要是否輸出此目錄);
操作:Linux系統下編譯
編譯動態庫
刪除install下所有文件和目錄,得到一個干凈的目錄。
創建build目錄,存放中間文件:
$ cd demo_cmakemymath $ mkdir build
編譯
$ cd build $ cmake .. $ make
成功編譯后,在install目錄里可以看到編譯的輸出結果:
demo_cmakeinstallincludemymathmymath.h demo_cmakeinstalllibrarylinuxdebuglibmymath.so
編譯可執行文件
$ cd demo_cmakemyapp $ mkdir build $ cd build $ cmake .. $ make
查看install目錄下的輸出結果:
demo_cmakeinstallinlinuxdebugmyapp
運行可執行程序
$ cd demo_cmakeinstallinlinuxdebug $ ./myapp
執行結果如下圖:
Windows系統中使用VSCode開發
創建MSVC工程
在VSCode IDE中,通過菜單【File】-【Open Folder】,打開文件夾demo_cmake。
因為demo_cmake目錄下存在一個頂層CMakeLists.txt文件,所以VSCode偵測到之后會自動進行cmake配置,同時會創建目錄build來存放所有的中間文件。
有些VSCode版本會跳出一個提示窗,讓用戶選擇進行cmake配置,如下一步中所示。
執行cmake配置
可以同時按下:【ctrl】 + 【shift】 + 【p】,重新進行cmake配置:
編譯動態庫
同時按下【shift】+【F7】,(或者按下VSCode最下方 【Build】右側的編譯目標),彈出窗口:
查看install目錄中的輸出文件:
demo_cmakeinstalllibrarywindowsdebugmymath.lib demo_cmakeinstallinwindowsdebugmymath.dll
編譯可執行程序
同時按下【shift】+【F7】,選擇編譯myapp。
查看install目錄:
demo_cmakeinstallinwindowsdebugmyapp
雙擊運行可執行程序
Windows只用VS2019來開發
生成VS2019解決方案
打開命令行窗口: x64 Native Tools Command Prompt for VS 2019
> cd demo_cmake > md build > cd build > cmake ..
輸出如圖:
使用VS2019編譯動態庫
此時,可以看到解決方案:demo_cmakeuilddemo_cmake.sln。
使用VS2019打開解決方案文件:
在工程mymath上單擊右鍵,選擇【重新生成】,在輸出信息區可以看到生成了文件:
demo_cmakeinstalllibrarywindowsdebugmymath.lib demo_cmakeinstallinwindowsdebugmymath.dll
編譯可執行程序
在工程myapp上單擊右鍵,選擇【重新生成】。
在輸出信息區可以看到生成了文件:
demo_cmakeinstallinwindowsdebugmyapp.exe
運行可執行程序
------ End ------
我們知道,在Windows平臺上,VS2019只是一個IDE而已,它的底層是調用MSBuild來執行編譯動作的。
MSBuild的角色與cmake非常類似,使用起來也比較方便,以后再總結一篇關于MSBuild的模板工程。
審核編輯:劉清
-
Linux系統
+關注
關注
4文章
595瀏覽量
27510 -
Windows系統
+關注
關注
0文章
29瀏覽量
9812 -
vscode
+關注
關注
1文章
157瀏覽量
7850
原文標題:分享一個適合【團隊】開發的cmake【跨平臺】工程模板
文章出處:【微信號:IOT物聯網小鎮,微信公眾號:IOT物聯網小鎮】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
沒有CySecureTools模塊,如何在Windows操作系統中使用mtb 3.2?
在Windows上使用VScode進行編譯LED例程下載,串口下載報錯,如何切換芯片型號?
AN0130 AT32使用VSCode開發
Windows系統VSCode+pyOCD開發環境搭建步驟分享
在Windows上使用VScode進行編譯LED例程下載,串口下載報錯如何切換芯片型號?
如何在ARM上使用Clang for Windows進行編譯
如何在Microsoft Visual Studio 2015中使用英特爾C++編譯器
VSCode搭建STM32單片機開發環境
![<b class='flag-5'>VSCode</b>搭建STM32單片機<b class='flag-5'>開發</b>環境](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
stm32cubeMX+vscode開發編譯調試stm32程序
![stm32cubeMX+<b class='flag-5'>vscode</b><b class='flag-5'>開發</b><b class='flag-5'>編譯</b>調試stm32程序](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論