日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
分享一個(gè)適合【團(tuán)隊(duì)】開發(fā)的cmake【跨平臺】工程模板

之前分享過一篇關(guān)于 cmake 的入門文章:??《使用 cmake 來搭建跨平臺的應(yīng)用程序框架:C語言版本》??,那篇文章重點(diǎn)是描述如何利用 cmake 來編譯或者構(gòu)建跨平臺的工程,并沒有涉及到團(tuán)隊(duì)協(xié)作開發(fā)方面的內(nèi)容。

成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司10年經(jīng)驗(yàn)成就非凡,專業(yè)從事網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)頁制作,軟文平臺廣告投放平臺等。10年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:18982081108,我們期待您的來電!

這篇文章提供了一個(gè)簡潔易懂的 cmake 工程模板,可以滿足一個(gè)小團(tuán)隊(duì)的合作開發(fā),無論是在代碼安全性,還是開發(fā)效率上,都能滿足基本的開發(fā)需求。

本文詳細(xì)描述了文件結(jié)構(gòu)和操作流程,如何在Linux系統(tǒng)使用命令行來編譯,如何在Windows系統(tǒng)中使用VSCode 和Visual Studio 2019來進(jìn)行開發(fā)和編譯。

使用這個(gè)cmake模板之后,代碼的結(jié)構(gòu)非常的清晰,編譯過程中產(chǎn)生的中間文件也不會污染源代碼。

無論是開發(fā)一些個(gè)人項(xiàng)目,或者是在一些小團(tuán)隊(duì)中使用是綽綽有余了。

示例代碼中核心的兩個(gè)文件就是:app.cmake和lib.cmake,幾乎每一行都有注釋。

文件目錄說明

在團(tuán)隊(duì)開發(fā)工作中,每個(gè)人負(fù)責(zé)不同的模塊。

從代碼保密的角度看,除了項(xiàng)目負(fù)責(zé)人(或者說項(xiàng)目整合人員)有權(quán)限獲取一個(gè)項(xiàng)目中的所有代碼之外,每個(gè)開發(fā)者通常只擁有自己負(fù)責(zé)的模塊。

每個(gè)開發(fā)者在編譯自己的模塊時(shí),需要把輸出文件(頭文件、庫文件、文檔)等,匯總到一個(gè)中央倉庫中,方便整合人員進(jìn)行集成編譯。

因此,示例代碼如下圖所示:

CMakeLists.txt:是最外層的 cmake 文件。

install:是所有模塊編譯結(jié)果的安裝目錄,便于項(xiàng)目整合人員集成編譯。

myapp:是一個(gè)可執(zhí)行程序的模板。

mymath:是一個(gè)動態(tài)鏈接庫的模板。

再來看一下mymath內(nèi)部的文件組織結(jié)構(gòu):

build:存放編譯過程中產(chǎn)生的中間文件,不會污染源代碼。當(dāng)然了,如果使用 git 來進(jìn)行版本管理,需要把這個(gè)目錄添加到 .gitignore 文件中。

lib.cmake:比較重要的 cmake 文件,這個(gè)模板的核心價(jià)值就在這個(gè)文件中。

source:存放源代碼,并且區(qū)分了 linux 和 windows 系統(tǒng),在不同的系統(tǒng)上編譯,會自動編譯對應(yīng)目錄下的 C 文件。

include:存放頭文件。

myapp目錄內(nèi)部結(jié)構(gòu)與mymath幾乎是一樣的,這里就不贅述了。

這兩個(gè)模塊的編譯結(jié)果會自動輸出到install目錄,如下圖所示:

在install目錄內(nèi):

include:匯總了所有模塊的頭文件。

library:匯總了所有模塊輸出的庫文件。

bin:匯總了所有的可執(zhí)行程序(一些單元測試程序根據(jù)自己的需要是否輸出此目錄)。

操作:Linux系統(tǒng)下編譯

編譯動態(tài)庫

刪除install下所有文件和目錄,得到一個(gè)干凈的目錄。

創(chuàng)建build目錄,存放中間文件:

$ cd demo_cmake\mymath
$ mkdir build

編譯:

$ cd build
$ cmake ..
$ make

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

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

編譯可執(zhí)行文件

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

查看install目錄下的輸出結(jié)果:

demo_cmake\install\bin\linux\debug\myapp

運(yùn)行可執(zhí)行程序

$ cd demo_cmake\install\bin\linux\debug
$ ./myapp

執(zhí)行結(jié)果如下圖:

Windows系統(tǒng)中使用VSCode開發(fā)

創(chuàng)建MSVC工程

在VSCode IDE中,通過菜單【File】-【Open Folder】,打開文件夾demo_cmake。

因?yàn)閐emo_cmake目錄下存在一個(gè)頂層CMakeLists.txt文件,所以VSCode偵測到之后會自動進(jìn)行cmake配置,同時(shí)會創(chuàng)建目錄build來存放所有的中間文件。

有些VSCode版本會跳出一個(gè)提示窗,讓用戶選擇進(jìn)行cmake配置,如下一步中所示。

執(zhí)行cmake配置

可以同時(shí)按下:【ctrl】 + 【shift】 + 【p】,重新進(jìn)行cmake配置:

編譯動態(tài)庫

同時(shí)按下【shift】+【F7】,(或者按下VSCode最下方 【Build】右側(cè)的編譯目標(biāo)),彈出窗口:

查看install目錄中的輸出文件:

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

編譯可執(zhí)行程序

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

查看install目錄:

demo_cmake\install\bin\windows\debug\myapp

雙擊運(yùn)行可執(zhí)行程序

Windows只用VS2019來開發(fā)

生成VS2019解決方案

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

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

輸出如圖:

使用VS2019編譯動態(tài)庫

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

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

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

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

編譯可執(zhí)行程序

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

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

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

運(yùn)行可執(zhí)行程序

我們知道,在Windows平臺上,VS2019只是一個(gè)IDE而已,它的底層是調(diào)用MSBuild來執(zhí)行編譯動作的。

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

本文轉(zhuǎn)載自微信公眾號「IOT物聯(lián)網(wǎng)小鎮(zhèn)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系IOT物聯(lián)網(wǎng)小鎮(zhèn)公眾號。


網(wǎng)站標(biāo)題:分享一個(gè)適合【團(tuán)隊(duì)】開發(fā)的cmake【跨平臺】工程模板
當(dāng)前網(wǎng)址:http://www.5511xx.com/article/dhpgiis.html