吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Windows系統中使用VSCode來進行開發和編譯

IOT物聯網小鎮 ? 來源:IOT物聯網小鎮 ? 作者:道哥 ? 2022-11-21 09:42 ? 次閱讀

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

本文詳細描述了文件結構和操作流程,如何在Linux系統使用命令行來編譯,如何在Windows系統中使用VSCode 和Visual Studio 2019來進行開發和編譯。

使用這個cmake模板之后,代碼的結構非常的清晰,編譯過程中產生的中間文件也不會污染源代碼。

無論是開發一些個人項目,或者是在一些小團隊中使用是綽綽有余了。

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

文末有下載鏈接。

文件目錄說明

在團隊開發工作中,每個人負責不同的模塊。

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

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

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

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

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

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

myapp:是一個可執行程序的模板;

mymath:是一個動態鏈接庫的模板;

再來看一下mymath內部的文件組織結構:

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

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

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

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

include:存放頭文件;

myapp目錄內部結構與mymath幾乎是一樣的,這里就不贅述了。

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

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

在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

執行結果如下圖:

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

Windows系統中使用VSCode開發

創建MSVC工程

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

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

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

執行cmake配置

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

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

編譯動態庫

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

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

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

demo_cmakeinstalllibrarywindowsdebugmymath.lib
demo_cmakeinstallinwindowsdebugmymath.dll

編譯可執行程序

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

查看install目錄:

demo_cmakeinstallinwindowsdebugmyapp

雙擊運行可執行程序

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

Windows只用VS2019來開發

生成VS2019解決方案

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

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

輸出如圖:

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

使用VS2019編譯動態庫

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

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

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

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

demo_cmakeinstalllibrarywindowsdebugmymath.lib
demo_cmakeinstallinwindowsdebugmymath.dll

編譯可執行程序

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

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

demo_cmakeinstallinwindowsdebugmyapp.exe

運行可執行程序

1ea8eb0c-692f-11ed-8abf-dac502259ad0.png
------ 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?

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

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

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

    何在VScode里面開發51程序?

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

    使用vscode進行開發

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

    AN0130 AT32使用VSCode開發

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

    Windows系統VSCode+pyOCD開發環境搭建步驟分享

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

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

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

    何在ARM上使用Clang for Windows進行編譯

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

    何在結構監測系統中使用基于memzo的壓電礦車填補電力缺口

    本文檔內容介紹了如何在結構監測系統中使用基于memzo的壓電礦車填補電力缺口。
    發表于 09-17 10:34 ?1次下載
    如<b class='flag-5'>何在</b>結構監測<b class='flag-5'>系統</b><b class='flag-5'>中使</b>用基于memzo的壓電礦車<b class='flag-5'>來</b>填補電力缺口

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

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

    ESP32教程之如何在Windows系統上搭建開發環境

    本文檔的主要內容詳細介紹的是ESP32教程之如何在Windows系統上搭建開發環境。
    發表于 12-13 15:34 ?40次下載
    ESP32教程之如<b class='flag-5'>何在</b><b class='flag-5'>Windows</b><b class='flag-5'>系統</b>上搭建<b class='flag-5'>開發</b>環境

    VSCode搭建STM32單片機開發環境

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

    stm32cubeMX+vscode開發編譯調試stm32程序

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

    何在vscode上面開發stm32

    vscode具有強大的代碼編輯功能,自動補全代碼,高亮代碼看起來非常舒服,而Keil雖然也很強大,但是代碼補全沒有vsCode用起來舒服,如果能在vscode上面開發stm32將會非常
    的頭像 發表于 10-08 16:32 ?2371次閱讀

    何在Windows中使用MTP協議

    Windows操作系統中使用MTP(Media Transfer Protocol)協議主要涉及到與移動設備(如智能手機、平板電腦等)的連接和數據傳輸。MTP是一種用于交換媒體文件(如音樂、視頻
    的頭像 發表于 01-03 10:26 ?413次閱讀
    墓地附近做生意风水| 大三元百家乐的玩法技巧和规则| 大发888-娱乐场| 网上百家乐官网官方网站| 加多宝百家乐官网的玩法技巧和规则 | 玩百家乐官网有何技巧| 怎样玩百家乐的玩法技巧和规则| 香港六合彩官方网站| 网站百家乐官网假| 蓝盾百家乐娱乐场开户注册| 百家乐赌球| 百家乐赢钱密籍| 德州扑克计算器| 百家乐官网平台送彩金| 送彩金百家乐的玩法技巧和规则 | 利来百家乐娱乐| 百家乐官网庄闲局部失衡| 百家乐筹码真伪| 金宝博百家乐官网现金| 百家乐翻天腾讯视频| 皇冠平台| 百家乐真人游戏开户| 棋牌赌博网站| 大众百家乐官网娱乐城| 半岛棋牌游戏| 澳门百家乐官网怎洋赢钱| 百家乐骗局视频| 玩百家乐官网澳门368娱乐城| 都坊百家乐的玩法技巧和规则| 百家乐官网庄闲局部失衡| 博彩百家乐五2013124预测| 南京百家乐官网菜籽油| 威尼斯人娱乐城首选d77com| 百家乐官网的分析| 大发888 df登录| 黄金城百家乐官网苹果版| E世博网址| 澳门百家乐园游戏| 百家乐官网的嬴钱法| 兰桂坊百家乐的玩法技巧和规则 | 大发888怎么下载|