成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

分享一個適合【團隊】開發的cmake【跨平臺】工程模板

開發 開發工具
這篇文章提供了一個簡潔易懂的 Cmake 工程模板,可以滿足一個小團隊的合作開發,無論是在代碼安全性,還是開發效率上,都能滿足基本的開發需求。

之前分享過一篇關于 cmake 的入門文章:??《使用 cmake 來搭建跨平臺的應用程序框架:C語言版本》??,那篇文章重點是描述如何利用 cmake 來編譯或者構建跨平臺的工程,并沒有涉及到團隊協作開發方面的內容。

這篇文章提供了一個簡潔易懂的 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_cmake\mymath
$ mkdir build

編譯:

$ cd build
$ cmake ..
$ make

成功編譯后,在install目錄里可以看到編譯的輸出結果:

demo_cmake\install\include\mymath\mymath.h
demo_cmake\install\library\linux\debug\libmymath.so

編譯可執行文件

$ cd demo_cmake\myapp
$ mkdir build
$ cd build
$ cmake ..
$ make

查看install目錄下的輸出結果:

demo_cmake\install\bin\linux\debug\myapp

運行可執行程序

$ cd demo_cmake\install\bin\linux\debug
$ ./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_cmake\install\library\windows\debug\mymath.lib
demo_cmake\install\bin\windows\debug\mymath.dll

編譯可執行程序

同時按下【shift】+【F7】,選擇編譯myapp。

查看install目錄:

demo_cmake\install\bin\windows\debug\myapp

雙擊運行可執行程序

圖片

Windows只用VS2019來開發

生成VS2019解決方案

打開命令行窗口: x64 Native Tools Command Prompt for VS 2019。

> cd demo_cmake
> md build
> cd build
> cmake ..

輸出如圖:

圖片

使用VS2019編譯動態庫

此時,可以看到解決方案:demo_cmake\build\demo_cmake.sln。

使用VS2019打開解決方案文件:

圖片

在工程mymath上單擊右鍵,選擇【重新生成】,在輸出信息區可以看到生成了文件:

demo_cmake\install\library\windows\debug\mymath.lib
demo_cmake\install\bin\windows\debug\mymath.dll

編譯可執行程序

在工程myapp上單擊右鍵,選擇【重新生成】。

在輸出信息區可以看到生成了文件:

demo_cmake\install\bin\windows\debug\myapp.exe

運行可執行程序

圖片

我們知道,在Windows平臺上,VS2019只是一個IDE而已,它的底層是調用MSBuild來執行編譯動作的。

MSBuild的角色與cmake非常類似,使用起來也比較方便,以后再總結一篇關于MSBuild的模板工程。

本文轉載自微信公眾號「IOT物聯網小鎮」,可以通過以下二維碼關注。轉載本文請聯系IOT物聯網小鎮公眾號。

責任編輯:姜華 來源: IOT物聯網小鎮
相關推薦

2014-03-12 10:00:26

移動開發跨平臺

2013-05-27 09:47:33

Java開發Java跨平臺

2015-03-17 09:59:41

跨平臺

2021-02-01 17:29:19

FlutterHello World開發

2013-05-13 10:24:44

谷歌開發團隊開發管理

2013-08-05 10:50:00

2012-06-27 17:30:03

VisionMobil跨平臺開發工具

2016-04-01 10:57:50

敏捷開發團隊配合

2021-06-23 06:12:38

Subtitld編輯器開源

2022-09-21 08:38:13

CubyText知識管理應用開源

2023-03-17 18:33:12

ChatGPTLLM應用

2022-03-17 08:00:00

項目管理IT工具

2021-11-15 14:42:20

Motrix下載管理器開源

2024-02-07 08:52:07

VueUI 庫Vue.js

2013-07-02 10:24:52

團隊管理團隊遠程團隊

2021-03-30 11:33:03

C語言頭文件開發

2018-11-09 09:40:52

2014-07-08 09:27:24

SQLSERVER腳本

2023-02-10 14:54:20

編譯工具cmake
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品免费看 | 欧美亚州综合 | 国产精品视频播放 | 蜜月va乱码一区二区三区 | 国产无人区一区二区三区 | 老牛嫩草一区二区三区av | 最新免费视频 | 亚洲精品国产电影 | av入口| 91在线区| 国产在线中文字幕 | 91视频精选 | 久久美女网| 一区二区三区四区国产 | 国产资源一区二区三区 | 久久毛片 | 黄视频免费 | 久草视频在线播放 | 亚洲狠狠| 嫩草黄色影院 | 无码日韩精品一区二区免费 | 久久精品国产一区二区电影 | 成人精品视频在线 | 99久久久久国产精品免费 | 精品视频免费 | 欧美日韩精品一区二区三区四区 | 国产精品.xx视频.xxtv | 国产黑丝av | 免费一区在线观看 | 自拍偷拍亚洲视频 | 国产精品久久片 | 青青草一区二区 | 亚洲品质自拍视频 | 国产成人精品综合 | 久久99成人 | 在线视频a| 欧美视频免费在线 | 国产小视频精品 | 中文字幕日韩av | 在线观看欧美一区 | av网站在线免费观看 |