使用vscode MSVC CMake進行C++開發和Debug

使用vscode MSVC CMake進行C++開發和Debug

  • 前言
  • 軟件安裝
  • 安裝插件
  • 構建
  • debuug方案一
  • debug方案二
  • 其他

前言

一般情況下我都是使用visual studio來進行c++開發的,但是由于python用的是vscode,所以二者如果統一的話能稍微提高一點效率。

軟件安裝

需要安裝的軟件如下:

軟件說明
vscode必須
CMake必須
Microsoft Visual StudioVisual Studio帶編譯器,因此也必須下載,如果下載這個就要安裝別的編譯器
vcpkg包管理器,非必須

安裝插件

首先需要安裝vscode的插件,如圖所示其中C/C++ Extension Pack包含了C/C++,C/C++ Themes和Cmake Tools。
在這里插入圖片描述

構建

在寫好.cpp文件和CMakeLists.txt后,配置好CMakePresets.json文件和CMakeUserPresets.json,可以在vscode中用快捷鍵ctrl+shift+p。然后輸入cmake,在彈窗中先選擇Select Configure Preset,選擇在CMakeUserPresets.json設定好的預設,然后再選擇Configure,就開始CMake的構建階段。

若不清楚CMakeLists.txt,CMakePresets.json文件和CMakeUserPresets.json文件如何寫以及如何設置,建議先根據教程學習CMake,等熟悉CMake后再查閱本教程。

在這里插入圖片描述

debuug方案一

當安裝了CMake Tools這個插件后,vscode左側邊欄會有顯示,如下圖所示
在這里插入圖片描述
其中直接點debug(默認快捷鍵shift+F5),代碼可以進入debug模式進行debug;而點擊launch,代碼就是直接運行不debug。

這種方法很方便,不需要自行配置launch.json文件,但是有一個缺陷,就是如果有在控制臺打印內容的代碼,這種方法在debug的時候無法在控制臺中打印。

debug方案二

方案二稍微麻煩一點,但是能看到在控制臺中打印的內容。

在根目錄下創建.vscode文件夾,然后在.vscode文件夾中創建launch.json文件,文件中的內容參考CMake Tools教程中,當使用MSVC的時候拷貝如下內容:

{"version": "0.2.0","configurations": [{"name": "(msvc) Launch","type": "cppvsdbg","request": "launch",// Resolved by CMake Tools:"program": "${command:cmake.launchTargetPath}","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [{// add the directory where our target was built to the PATHs// it gets resolved by CMake Tools:"name": "PATH","value": "${env:PATH}:${command:cmake.getLaunchTargetDirectory}"},{"name": "OTHER_VALUE","value": "Something something"}],"externalConsole": true}]
}

然后點擊右上角的小三角形(也可以默認快捷鍵F5
在這里插入圖片描述
點擊debug或者run都可以,然后再下一級界面中選擇(msvc Launch),兩個任選其一即可,這兩個都代表剛剛在launch.json文件中設置的內容,至于為什么有兩個我也不清楚,按理來說應該只有一個的。
在這里插入圖片描述
然后即可進行debug或者run。

其他

在其他一些教程中,例如教程1,教程2中,都說要配置環境變量,其實他們說要配置環境變量其實是對應的上圖中第一列C/C++: cl.exe build and debug active file這種debug方法。而我的方法是借用了CMake Tools這個插件,因此經過實測并不需要配置環境變量。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81451.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81451.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81451.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【后端高階面經:消息隊列篇】29、Kafka高性能探秘:零拷貝、順序寫與分區并發實戰

一、 順序寫入:磁盤性能的極致挖掘 Kafka的高性能本質上源于對磁盤順序訪問的深度優化。 傳統隨機寫入的磁盤操作需要磁頭頻繁尋道,機械硬盤的隨機寫性能通常僅為100IOPS左右,而Kafka通過追加日志(Append-Only Log)模式,將所有消息按順序寫入分區文件,使磁盤操作轉化為…

AI預測3D新模型百十個定位預測+膽碼預測+去和尾2025年5月27日第90彈

從今天開始,咱們還是暫時基于舊的模型進行預測,好了,廢話不多說,按照老辦法,重點8-9碼定位,配合三膽下1或下2,殺1-2個和尾,再殺6-8個和值,可以做到100-300注左右。 (1)定…

Git 初次推送遠程倉庫

Git 初次推送遠程倉庫(完整實戰版) —— 涵蓋重命名分支、強制合并、沖突解決等高頻場景 🔥 核心流程圖 初始化 → 關聯遠程 → 提交代碼 → 處理分支沖突 → 成功推送 1. 基礎操作(全新倉庫) # 初始化 cd /your/pr…

Pluto實驗報告——基于FM的音頻信號傳輸并解調恢復

目錄 一、實驗目的 ................................ ................................ ................................ .................. 3 二、實驗內容 ................................ ................................ ................................ ......…

輸出數據OutputFormat案例

輸出數據OutputFormat 案例: www.atguigu.com www.atguigu.com www.atguigu.com www.hao123.com www.shouhu.com www.baidu.com www.atguigu.com www.qq.com www.gaga.com www.qinghua.com www.sogou.com www.baidu.com www.alibaba.com …

STM32與ESP32的區別

STM32與ESP32都是當前電子行業中廣泛使用的微控制器芯片,但二者在架構、功能、應用領域以及開發生態上均存在顯著差異。需要高度實時響應和低功耗的系統通常適合STM32,而需要網絡連接和便捷無線通訊的物聯網應用通常更適合ESP32。 一、架構與性能 STM32…

YOLOv11改進 | Neck篇 | 雙向特征金字塔網絡BiFPN助力YOLOv11有效漲點

YOLOv11改進 | Neck篇 | 雙向特征金字塔網絡BiFPN助力YOLOv11有效漲點 引言 目標檢測領域的最新進展表明,特征金字塔網絡(FPN)的設計對模型性能具有決定性影響。本文詳細介紹如何將**雙向特征金字塔網絡(BiFPN)**集成到YOLOv11的Neck部分,通過改進的多尺度特征融合機制…

Python后端框架新星Robyn:性能與開發體驗的雙重革命

引言:Python后端框架的進化之路 在Web開發領域,Python生態長期被Flask、Django等經典框架主導。隨著異步編程需求的增長和高并發場景的普及,開發者對框架性能提出了更高要求。2023年,一款名為Robyn的新型Web框架橫空出世,以其獨特的Rust底層架構和優雅的Python API設計,…

ADS學習筆記(三) 瞬態仿真

參考書籍:見資源綁定,書籍3.4 瞬態仿真,書籍鏈接: https://pan.baidu.com/s/1pjw8p7r3-1x8qcC1-hljFQ?pwd4v79 提取碼: 4v79 本文為對實驗內容的補充 瞬態仿真放大倍數與交流仿真不一致 為什么對同一個BJT電路進行交流信號仿真和進行瞬態仿真,得出交流信號仿真的放大倍數是3.…

Flask 會話管理:從原理到實戰,深度解析 session 機制

1、Flask中session 的實現原理:服務器與客戶端的協作 HTTP 協議是無狀態的——服務器無法區分兩次請求是否來自同一用戶。這意味著,用戶登錄后跳轉到其他頁面時,服務器會“忘記”用戶身份。 為解決這一問題,Web 開發中引入了會話…

學習STC51單片機16(芯片為STC89C52RCRC)

每日一言 那些讓你喘不過氣的日子,正是蛻變的開始。 串口編程寄存器分析(紅色框里面的這個是串口助手里面生成的波特率初始化函數哈) 我們就根據以上的寄存器分析,因為這個是配置波特率的需要的寄存器 PCON smod 0 就是PCON的bit…

crud方法命名示例

以下是基于表名dste_project_indicator(項目指標表)的完整命名示例,覆蓋各類增刪改查場景: 1. 表名與實體類映射 // 表名:dste_project_indicator // 實體類:DsteProjectIndicatorEntity public class Ds…

AI時代新詞-人工智能生成內容(AIGC)

一、什么是人工智能生成內容(AIGC)? 人工智能生成內容(Artificial Intelligence Generated Content,簡稱AIGC)是指利用人工智能技術生成的各種形式的內容,包括文字、圖像、音頻和視頻等。AIGC的…

英語六級-閱讀篇

目錄 2023年12月大學英語真題(二) 十五選十(Section A) 單詞表 短語表 譯文 Passage Two(Section C) 單詞表 短語表 譯文 簡介:其實我總結這篇文章就是平時記憶該閱讀文章單詞中出現的…

Python 爬蟲開發

文章目錄 1. 常用庫安裝2. 基礎爬蟲開發2.1. 使用 requests 獲取網頁內容2.2. 使用 BeautifulSoup 解析 HTML2.3. 處理登錄與會話 3. 進階爬蟲開發3.1. 處理動態加載內容(Selenium)3.2. 使用Scrapy框架3.3. 分布式爬蟲(Scrapy-Redis&#xff…

為什么需要清除浮動?清除浮動的方式有哪些?

導語: 在前端面試中,“清除浮動”幾乎是每位面試官都會問到的基礎題。雖然浮動已經不如 Flex 和 Grid 那么常用了,但它在許多老項目中仍然占有一席之地。理解浮動的機制、掌握清除浮動的方式,是面試中體現你前端基礎扎實度的關鍵點。 一、面試主題概述 浮動(float)最初是…

一鍵啟動多個 Chrome 實例并自動清理的 Bash 腳本分享!

目錄 一、📦 腳本功能概覽 二、📜 腳本代碼一覽 三、🔍 腳本功能說明 (一)? 支持批量啟動多個 Chrome 實例 (二)? 每個實例使用獨立用戶數據目錄 (三)? 啟動后自…

2025.05.26【Wordcloud】詞云圖繪制技巧

Most basic See what input file is needed to build this basic wordcloud. Text analysis A text analysis by Benjamin Tovarcis for document classification. 文章目錄 Most basicText analysis 探索詞云圖的奧秘什么是詞云圖?為什么使用詞云圖?如…

RuoYi前后端分離框架集成UEditorPlus富文本編輯器

一、背景 采用若依框架搭建了一個小型的電子書項目,項目前端、后端、移動端就一人,電子書的章節內容是以富文本內容進行呈現的,產品設計人員直接給了一個第三方收費的富文本編輯器截圖放到開發文檔中,提了一沓需求點,概況下來就是要做成下圖中的樣子。作為一個后端開發人…

ETL 工具與數據中臺的關系與區別

ETL 工具和數據中臺作為數據處理領域的關鍵概念,雖然存在一定的關聯,但二者有著明顯的區別。本文將深入剖析 ETL 工具與數據中臺之不同。 一、ETL 工具概述 ETL 是數據倉庫技術中的核心技術之一,其全稱為 Extract(抽取&#xff…