RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Windows系統(tǒng)中使用VSCode來進(jìn)行開發(fā)和編譯

IOT物聯(lián)網(wǎng)小鎮(zhèn) ? 來源:IOT物聯(lián)網(wǎng)小鎮(zhèn) ? 作者:道哥 ? 2022-11-21 09:42 ? 次閱讀

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

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

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

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

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

文末有下載鏈接。

文件目錄說明

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

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

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

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

1db22812-692f-11ed-8abf-dac502259ad0.png

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

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

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

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

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

1dd3d192-692f-11ed-8abf-dac502259ad0.png

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

lib.cmake:比較重要的 cmake 文件,這個模板的核心價值就在這個文件中;

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

include:存放頭文件;

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

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

1df07fc2-692f-11ed-8abf-dac502259ad0.png

在install目錄內(nèi):

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

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

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

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

編譯動態(tài)庫

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

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

$ cd demo_cmakemymath
$ mkdir build

編譯

$ cd build
$ cmake ..
$ make

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

demo_cmakeinstallincludemymathmymath.h
demo_cmakeinstalllibrarylinuxdebuglibmymath.so

編譯可執(zhí)行文件

$ cd demo_cmakemyapp
$ mkdir build
$ cd build
$ cmake ..
$ make

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

demo_cmakeinstallinlinuxdebugmyapp

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

$ cd demo_cmakeinstallinlinuxdebug
$ ./myapp

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

1e12d96e-692f-11ed-8abf-dac502259ad0.png

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

創(chuàng)建MSVC工程

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

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

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

執(zhí)行cmake配置

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

1e2ed59c-692f-11ed-8abf-dac502259ad0.png

編譯動態(tài)庫

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

1e4c2624-692f-11ed-8abf-dac502259ad0.png

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

demo_cmakeinstalllibrarywindowsdebugmymath.lib
demo_cmakeinstallinwindowsdebugmymath.dll

編譯可執(zhí)行程序

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

查看install目錄:

demo_cmakeinstallinwindowsdebugmyapp

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

1e66cefc-692f-11ed-8abf-dac502259ad0.png

Windows只用VS2019來開發(fā)

生成VS2019解決方案

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

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

輸出如圖:

1e7ce2fa-692f-11ed-8abf-dac502259ad0.png

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

此時,可以看到解決方案:demo_cmakeuilddemo_cmake.sln。

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

1e8fc7e4-692f-11ed-8abf-dac502259ad0.png

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

demo_cmakeinstalllibrarywindowsdebugmymath.lib
demo_cmakeinstallinwindowsdebugmymath.dll

編譯可執(zhí)行程序

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

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

demo_cmakeinstallinwindowsdebugmyapp.exe

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

1ea8eb0c-692f-11ed-8abf-dac502259ad0.png
------ End ------

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

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






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    593

    瀏覽量

    27392
  • Windows系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    9761
  • vscode
    +關(guān)注

    關(guān)注

    1

    文章

    155

    瀏覽量

    7696

原文標(biāo)題:分享一個適合【團(tuán)隊】開發(fā)的cmake【跨平臺】工程模板

文章出處:【微信號:IOT物聯(lián)網(wǎng)小鎮(zhèn),微信公眾號:IOT物聯(lián)網(wǎng)小鎮(zhèn)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    沒有CySecureTools模塊,如何在Windows操作系統(tǒng)中使用mtb 3.2?

    沒有 CySecureTools 模塊,如何在 Windows 操作系統(tǒng)中使用 mtb 3.2? RDK3 devkit 需要此模塊。
    發(fā)表于 05-31 07:35

    windows10+vscode編譯ble_throughput這個demo,編譯失敗的原因?

    windows10+vscode編譯ble_throughput這個demo,出現(xiàn)編譯失敗。截圖如附件。
    發(fā)表于 06-12 07:10

    Windows上使用VScode進(jìn)行編譯LED例程下載,串口下載報錯,如何切換芯片型號?

    Windows上使用VScode進(jìn)行編譯LED例程下載, 提示A fatal error occurred: This chip is ESP32-C3 not ESP32. Wro
    發(fā)表于 06-21 07:00

    何在VScode里面開發(fā)51程序?

    何在VScode里面開發(fā)51程序?
    發(fā)表于 10-21 07:05

    使用vscode進(jìn)行開發(fā)

    Project設(shè)置項目名選擇芯片類型這樣新建項目完成使用vscode進(jìn)行開發(fā)使用vscode替代Keil自然是因為Keil中沒有代碼補(bǔ)全
    發(fā)表于 01-10 06:12

    AN0130 AT32使用VSCode開發(fā)

    tasks.json腳本修改上圖中框起來的路徑需要根據(jù)實際路徑進(jìn)行修改。工程使用通過以上配置,現(xiàn)在可以使用VSCode開發(fā)、編譯、下載、調(diào)試AT32 MCU了。點(diǎn)擊
    發(fā)表于 05-13 20:02

    Windows系統(tǒng)VSCode+pyOCD開發(fā)環(huán)境搭建步驟分享

    Git如果你的Windows系統(tǒng)上還沒有Git,需要安裝Git;如果已經(jīng)有了,則可以跳過此步驟。當(dāng)前最新版本下載鏈接安裝過程比較容易,不再贅述。1.6 安裝VSCode如果你的Windows
    發(fā)表于 12-15 15:31

    Windows上使用VScode進(jìn)行編譯LED例程下載,串口下載報錯如何切換芯片型號?

    Windows上使用VScode進(jìn)行編譯LED例程下載,提示A fatal error occurred: This chip is ESP32-C3 not ESP32. Wron
    發(fā)表于 02-20 06:30

    何在ARM上使用Clang for Windows進(jìn)行編譯

    本指南介紹了LLVM12和相關(guān)Clang版本中的功能,這些功能有助于開發(fā)人員用于基于Arm的設(shè)備。特別是,本指南探討了如何使用本機(jī)工具鏈進(jìn)行編譯適用于Windows on Arm(Wo
    發(fā)表于 08-08 06:56

    何在結(jié)構(gòu)監(jiān)測系統(tǒng)中使用基于memzo的壓電礦車填補(bǔ)電力缺口

    本文檔內(nèi)容介紹了如何在結(jié)構(gòu)監(jiān)測系統(tǒng)中使用基于memzo的壓電礦車填補(bǔ)電力缺口。
    發(fā)表于 09-17 10:34 ?1次下載
    如<b class='flag-5'>何在</b>結(jié)構(gòu)監(jiān)測<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>中使</b>用基于memzo的壓電礦車<b class='flag-5'>來</b>填補(bǔ)電力缺口

    何在Microsoft Visual Studio 2015中使用英特爾C++編譯

    此視頻演示了如何在Microsoft * Visual Studio 2015 *中使用英特爾?C++編譯
    的頭像 發(fā)表于 10-30 06:03 ?6911次閱讀

    ESP32教程之如何在Windows系統(tǒng)上搭建開發(fā)環(huán)境

    本文檔的主要內(nèi)容詳細(xì)介紹的是ESP32教程之如何在Windows系統(tǒng)上搭建開發(fā)環(huán)境。
    發(fā)表于 12-13 15:34 ?40次下載
    ESP32教程之如<b class='flag-5'>何在</b><b class='flag-5'>Windows</b><b class='flag-5'>系統(tǒng)</b>上搭建<b class='flag-5'>開發(fā)</b>環(huán)境

    VSCode搭建STM32單片機(jī)開發(fā)環(huán)境

    前言由于之前的學(xué)習(xí)過程中使用過了VSCode、Source Insight這類強(qiáng)大的代碼編輯器,感覺實在是太好用了。但是最近自己要用到Keil進(jìn)行STM32單片機(jī)的開發(fā),因為使用過了
    發(fā)表于 11-13 11:06 ?15次下載
    <b class='flag-5'>VSCode</b>搭建STM32單片機(jī)<b class='flag-5'>開發(fā)</b>環(huán)境

    stm32cubeMX+vscode開發(fā)編譯調(diào)試stm32程序

    stm32cubeMX+vscode開發(fā)編譯調(diào)試stm32程序安裝vscode安裝make工具安裝交叉編譯工具鏈安裝openocd安裝cla
    發(fā)表于 12-24 19:31 ?6次下載
    stm32cubeMX+<b class='flag-5'>vscode</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>編譯</b>調(diào)試stm32程序

    何在vscode上面開發(fā)stm32

    vscode具有強(qiáng)大的代碼編輯功能,自動補(bǔ)全代碼,高亮代碼看起來非常舒服,而Keil雖然也很強(qiáng)大,但是代碼補(bǔ)全沒有vsCode用起來舒服,如果能在vscode上面開發(fā)stm32將會非常
    的頭像 發(fā)表于 10-08 16:32 ?2301次閱讀
    RM新时代网站-首页