VS Code構建C/C++開發環境(Windows with MinGW and CMake)

文章目錄

  • 目的
  • 編譯工具鏈
  • 基礎開發與調試
  • 基于CMake開發與調試
  • 關于settings.json
  • 總結

目的

在Windows上進行C/C++開發目前最最常用的IDE就是微軟的 Visual Studio ,只是對我來說早些年的VS實在是太卡了,留下了不好的印象。后來沒怎么用過,現在下了用起來也不怎么習慣,相對來說我還是喜歡更輕量的方式進行開發。這篇文章將記錄在VS Code中構建C/C++開發環境的一些內容。

VS Code中構建C/C++開發環境進行開發的方法官方是有文檔進行說明的,可以參考下面鏈接:
https://code.visualstudio.com/docs/languages/cpp
https://code.visualstudio.com/docs/cpp/introvideos-cpp

編譯工具鏈

Windows上進行C/C++開發需要有合適的編譯工具鏈,流行的有MSVC(微軟出品)和MinGW(GCC的一個實現)。

這里使用MSYS2(提供了命令行、包管理器等工具)來安裝MinGW-w64(64位版本)。首先去MSYS2官網下載軟件: https://www.msys2.org/ 。安裝完成后打開MSYS2-UCRT64的命令行界面,輸入下面命令下載MinGW-w64:

pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

下載完成后需要添加MinGW-w64到環境變量,如果未修改過目錄應該是 C:\msys64\ucrt64\bin
在這里插入圖片描述

添加完成后應該就可以在命令窗口中使用了:
在這里插入圖片描述

如果下載有問題也可以直接去MinGW-w64官網下載已經編譯好的工具鏈:https://www.mingw-w64.org/
如果對下載的版本選擇有問題可以參考文章:https://blog.csdn.net/weixin_43684214/article/details/136624735

基礎開發與調試

有了工具鏈后,在VS Code中開發C/C++需要安裝C/C++的擴展:
在這里插入圖片描述

之后就可以進行基礎的開發了,下面代碼編譯(Run)就可以生成可執行文件:
在這里插入圖片描述

上圖代碼為:

#include <iostream>int main()
{std::cout << "Hello Naisu!" << std::endl;
}

如果右上角沒有調試編譯的按鈕可以在VS Code的設置中調出來:
在這里插入圖片描述

編譯沒問題就可以進行調試(Debug),記得先打上斷點:
在這里插入圖片描述

最基礎的開發和調試就是上面這樣了,另外在VS Code中可以通過一些配置文件來對整個過程進行更加細致的配置:

  • tasks.json 編譯后會生成這個文件,該文件描述了編譯過程命令,可以修改該文件調整編譯行為,比如編譯前后動作、要編譯哪些文件、編譯生成什么文件等;
  • launch.json 該文件可以通過右上角調試按鈕右邊的配置按鈕生成,該文件描述了調試時的行為,比如 "stopAtEntry": true, 進入調試時就會停在入口處,"externalConsole": true, 調試的程序就會打開獨立的窗口;
  • c_cpp_properties.json 該文件可以按 Ctrl+Shift+P 然后選擇 C/C++: Edit Configurations(UI或JSON) 生成。該文件影響代碼編寫時智能提示等功能,還有不在當前工作目錄下載需要引用的頭文件或庫的路徑等;

在這里插入圖片描述

基于CMake開發與調試

首先需要去CMake官網下載并安裝:https://cmake.org/

安裝完成后可以在命令窗口使用cmake:
在這里插入圖片描述

VS Code中需要安裝相應的拓展:
在這里插入圖片描述

使用CMake的話只要項目目錄下有 CMakeLists.txt 文件,這個可以自己新建也可以按VS Code的文檔來,按 Ctrl+Shift+P 選擇 CMake: Quick Start 來進行配置(注意配置時項目名稱不能和cmake關鍵詞重復,比如test):
在這里插入圖片描述
按照設置下來還會生成 CMakePresets.json 文件,該文件描述了項目使用的工具鏈等。如果沒有該文件也可以通過選擇 CMake: Select Configure Preset 來配置。

配置完成后就可以用CMake工具進行編譯和調試了:
在這里插入圖片描述
除了側邊欄工具界面,底部的工具欄中也可以進行編譯調試等工作。

至此本文主要要描述的內容都已完成。

關于settings.json

前面的圖中可以看到 .vscode 目錄下有一個 settings.json 文件,該文件用來配置當前項目的VS Code軟件的一些特定配置,這個文件在實際項目中可以配置一些非常使用的功能,比如下面方式可以配置禁止搜索和禁止顯示某些文件:

{// Configure glob patterns for excluding files and folders in fulltext searches and quick open. // Inherits all glob patterns from the `files.exclude` setting."search.exclude": {"**/node_modules": true,"**/bower_components": true,"**/*.code-search": true},// Configure [glob patterns](https://aka.ms/vscode-glob-patterns) for excluding files and folders. // For example, the File Explorer decides which files and folders to show or hide based on this setting. "files.exclude": {"**/.git": true,"**/.svn": true,"**/.hg": true,"**/.DS_Store": true,"**/Thumbs.db": true},
}

settings.json 文件可以配置的項目比較多,更多內容可以參考下面鏈接:
https://code.visualstudio.com/docs/reference/default-settings

總結

使用VS Code構建C/C++開發環境目前來說也是比較方便的,很多輕量的使用是完全可以滿足的。

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

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

相關文章

一組可能的機器學習問題列表

線性回歸與多項式擬合的關系最小二乘法在機器學習中的應用梯度下降是如何實現的貝葉斯分類器的應用場景高斯分布與判定在哪里用到模型的評估有哪些參數誤差中的偏差和方差定義訓練集分組的快捷方式如何度量模型性能查準率查全率的定義roc,aux的含義正則化是什么意思k均值用來解…

linux下io操作詳細解析

在 Linux 系統下&#xff0c;IO&#xff08;輸入/輸出&#xff09;操作是程序與外部設備&#xff08;如文件、網絡等&#xff09;交互的重要方式。Linux 提供了豐富的系統調用和庫函數來支持各種 IO 操作。以下是對 Linux 下 IO 操作的詳細解析&#xff0c;包括文件 IO、網絡 I…

wsl2+ubuntu22.04安裝blender教程(詳細教程)

本章教程介紹,如何在Windows操作系統上通過wsl2+ubuntu安裝blender并運行教程。Blender 是一款免費、開源的 ??3D 創作套件??,廣泛應用于建模、動畫、渲染、視頻編輯、特效制作等領域。它由全球開發者社區共同維護,支持跨平臺(Windows、macOS、Linux),功能強大且完全…

目標檢測YOLO實戰應用案例100講- 基于卷積神經網絡的小目標檢測算法研究與應用

目錄 知識儲備 基于改進YOLOv5的小目標檢測算法 一、環境配置(Python 3.8+) 二、核心代碼實現 1. 改進模型定義(models/yolov5s_tiny.py ) 2. 小目標數據增強(datasets/tiny_aug.py ) 3. 訓練腳本(train.py ) 三、關鍵改進點說明 四、實驗配置建議 前言 傳統…

智能DNS解析:解決高防IP地區訪問異常的實戰指南

摘要&#xff1a;針對高防IP在部分地區無法訪問的問題&#xff0c;本文設計基于智能DNS的流量調度方案&#xff0c;提供GeoDNS配置與故障切換代碼示例。 一、問題背景 運營商誤攔截或線路波動可能導致高防IP在福建、江蘇等地訪問異常。傳統切換方案成本高&#xff0c;智能DNS可…

根據 PID 找到對應的 Docker 容器

引言 在日常運維與調試過程中&#xff0c;我們常常需要查找某個進程所屬的 Docker 容器。當系統出現問題或資源異常時&#xff0c;根據進程的 PID 找到其所屬容器可以幫助我們迅速定位問題。本文將介紹如何利用 Linux 的 cgroup 機制&#xff0c;以及 Docker 提供的工具來完成…

NO.88十六屆藍橋杯備戰|動態規劃-多重背包|擺花(C++)

多重背包 多重背包問題有兩種解法&#xff1a; 按照背包問題的常規分析?式&#xff0c;仿照完全背包&#xff0c;第三維枚舉使?的個數&#xff1b;利??進制可以表??定范圍內整數的性質&#xff0c;轉化成01 背包問題。 ?建議&#xff1a;并不是所有的多重背包問題都能…

【遠程工具】0 std::process::Command 介紹

std::process::Command 是 Rust 標準庫中用于創建和配置子進程的主要類型。它允許你啟動新的進程、設置其參數和環境變量、重定向輸入/輸出等。 基本用法 use std::process::Command;let output Command::new("echo").arg("Hello, world!").output().ex…

【圖書管理系統】深入解析基于 MyBatis 數據持久化操作:全棧開發圖書管理系統獲取圖書列表接口(后端:計算圖書頁數、查詢當前頁展示的書籍)

圖書列表 實現服務器代碼(計算圖書總數量查詢當前頁需要展示的書籍) 后端響應時&#xff0c;需要響應給前端的數據 records&#xff1a;第 pageNum 頁要展示的圖書有哪些&#xff08;存儲到List集合中&#xff09;total&#xff1a;計算一共有多少本書&#xff08;用于告訴前…

如何在idea中快速搭建一個Spring Boot項目?

文章目錄 前言1、創建項目名稱2、勾選需要的依賴3、在setting中檢查maven4、編寫數據源5、開啟熱啟動&#xff08;熱部署&#xff09;結語 前言 Spring Boot 憑借其便捷的開發特性&#xff0c;極大提升了開發效率&#xff0c;為 Java 開發工作帶來諸多便利。許多大伙伴希望快速…

制作前的關鍵籌備:考試考核系統之核心要點

明確系統使用目的? 制作考試考核系統前&#xff0c;企業需明確系統使用目的&#xff0c;這是開發基石&#xff0c;不同目的決定系統功能特性。用于員工培訓考核時&#xff0c;系統要與培訓內容結合&#xff0c;能生成相應考題&#xff0c;檢驗員工知識掌握程度&#xff0c;具備…

Springboot把外部jar包打包進最終的jar包,并實現上傳服務器

1、創建lib目錄&#xff0c;把jar包放進這個目錄下&#xff0c;然后標記lib目錄為“資源根路徑”&#xff08;鼠標右鍵lib目錄->將目錄標記為->資源根路徑。之后lib文件夾會有如下的圖標變化&#xff09; 文件結構如下&#xff1a; 2、pom文件添加依賴 <dependency…

內容中臺的核心架構是什么?

數據中樞與服務API架構 在內容中臺的核心架構中&#xff0c;數據中樞作為基礎層&#xff0c;通過統一的數據模型與標準化接口&#xff0c;實現多源內容的集中存儲與治理。其核心能力體現在對結構化與非結構化數據的清洗、分類及跨系統同步&#xff0c;例如整合企業內部的CRM、…

Light RPC:一款輕量高效的Java RPC框架實踐指南

Light RPC&#xff1a;一款輕量高效的Java RPC框架實踐指南 一、框架簡介二、快速入門1. 環境準備2. 服務端配置2.1 添加依賴2.2 YAML配置2.3 接口與實現 3. 客戶端配置3.1 添加依賴3.2 YAML配置3.3 客戶端調用 三、核心設計解析四、適用場景與優勢對比五、總結 一、框架簡介 …

Hologres實時數倉在B站游戲的建設與實踐

一、背景 實時數據倉庫是近年來數據技術領域內的一大發展潮流。構建一個能夠實現高吞吐量寫入與更新、端到端全鏈路實時處理以及低延遲、高并發的實時數據倉庫&#xff0c;一直是眾多企業面臨的重大挑戰。隨著B站游戲業務的快速發展&#xff0c;對數據的實時應用需求也日益增加…

Android WiFi協議之P2P介紹與實踐

Android WiFi P2P WiFi P2P (Peer-to-Peer) 是 Android 提供的一種允許設備之間直接通過 WiFi 進行通信的技術&#xff0c;無需接入傳統的 WiFi 網絡或互聯網。這種技術也被稱為 WiFi Direct。 一、WiFi P2P 基本概念 1. 核心組件 P2P 設備&#xff1a;支持 WiFi P2P 的 And…

淺談在HTTP中GET與POST的區別

從 HTTP 報文來看&#xff1a; GET請求方式將請求信息放在 URL 后面&#xff0c;請求信息和 URL 之間以 &#xff1f;隔開&#xff0c;請求信息的格式為鍵值對&#xff0c;這種請求方式將請求信息直接暴露在 URL 中&#xff0c;安全性比較低。另外從報文結構上來看&#xff0c…

若依微服務集成Flowable仿釘釘工作流

項目簡介 本項目工作流模塊集成在若依項目單獨一個模塊&#xff0c;可實現單獨運行部署&#xff0c; 前端采用微前端&#xff0c;嵌入在若依的前端項目中。因博主是后端開發&#xff0c;對前端不是太屬性&#xff0c;沒將工作流模塊前端代碼移到若依前端。下面貼上代碼工程結構…

WPS JS宏編程教程(從基礎到進階)-- 第六部分:JS集合與映射在 WPS 的應用

目錄 第6章 JS集合與映射在 WPS 的應用6-1 集合的創建(實例:唯一值提取)示例代碼詳細解析Excel 環境模擬說明6-2 集合的不重復特性應用(案例:提取唯一值記錄)示例代碼詳細解析案例說明6-3 集合成員添加與刪除示例代碼代碼解析直觀示意(Excel 模擬表格)6-4 集合成員添加…

MySQL 約束(入門版)

目錄 一、約束的基本概念 二、約束演示 三、外鍵約束 &#xff08;一&#xff09;介紹 &#xff08;二&#xff09;外鍵約束語法 &#xff08;三&#xff09;刪除/更新行為 一、約束的基本概念 1、概念&#xff1a;約束是作用于表中字段上的規則&#xff0c;用于限制存儲…