現代 C++ 開發工作流(VSCode / Cursor)

? 推薦的現代 C++ 開發工作流(含 VSCode / Cursor 插件配置)


🧰 一、環境要求

  • C++ 編譯器(如 g++clang++
  • CMake(建議 ≥ 3.16)
  • clangd(建議 ≥ 14,最好用系統包管理器安裝)
  • VSCode 或 Cursor 編輯器

🪛 二、VSCode 插件安裝(適用于 VSCode 和 Cursor)

打開 VSCode 插件市場,安裝以下插件:

插件名稱說明
? clangd由 LLVM 官方維護的語言服務器,提供智能跳轉、補全等
? CMake Tools用于管理構建配置、運行 cmake 構建
? CMake提供 CMakeLists.txt 的語法高亮和智能感知
? CodeLLDB(可選)高級調試功能(用于斷點、變量查看)
? Better C++ Syntax(可選)顏色高亮更強

📝 Cursor 編輯器內置了對 clangd 的支持,只要項目中有 compile_commands.json,通常無需額外配置插件,但可通過設置檢查是否啟用 clangd


?? 三、clangd 安裝與配置

1. 安裝 clangd(按平臺)

  • macOS(推薦用 Homebrew):
brew install llvm
  • Ubuntu:
sudo apt install clangd-14
  • Windows:

使用 LLVM 官方安裝包 安裝 clangd,并加入 PATH。

2. VSCode 設置 clangd 路徑(可選)

打開 VSCode 設置(Ctrl+Shift+P → Preferences: Open Settings (JSON)),添加:

"clangd.path": "/usr/bin/clangd"  // 或 /opt/homebrew/opt/llvm/bin/clangd

🧱 四、CMake 項目初始化與構建

項目結構建議:

my_project/
├── CMakeLists.txt
├── src/
│   └── main.cpp
├── include/
│   └── mylib.hpp
├── build/                  # 構建輸出目錄
└── .clangd                # clangd 配置(可選)

執行構建流程:

mkdir -p build
cd build
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
make -j
ln -s build/compile_commands.json .  # 可選,VSCode 更好識別

📦 五、.clangd 示例配置(可選)

放在項目根目錄的 .clangd 文件中:

CompileFlags:Add: [-Wall, -std=c++17]
Diagnostics:UnusedIncludes: StrictClangTidy:Add: [-checks=modernize-*]

🧭 六、VSCode 項目配置推薦(可選)

.vscode/settings.json 示例:

{"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools","C_Cpp.default.compileCommands": "${workspaceFolder}/build/compile_commands.json","clangd.arguments": ["--background-index","--clang-tidy"],"cmake.sourceDirectory": "${workspaceFolder}","cmake.buildDirectory": "${workspaceFolder}/build"
}

? 七、日常工作流簡版回顧

步驟命令 / 操作
初始化構建cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
編譯項目make -j 或用 CMake Tools 插件點擊構建
清理構建make cleanrm -rf build/
打開項目VSCode / Cursor 自動識別并啟用 clangd
寫代碼 / 跳轉 / 補全 / 調試全流程無阻礙
新增源文件寫完保存,clangd 會自動索引,無需額外操作

🧠 提示

  • 第一次打開項目:clangd 會慢慢建立 .cache/clangd/index,稍等幾秒即可

  • 如果 Cursor 識別不到類型,優先檢查:

    • compile_commands.json 是否存在?
    • clangd 是否正確讀取?

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

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

相關文章

[SAP ABAP] ALV報表練習4

SO銷售訂單明細報表業務目的:根據選擇屏幕的篩選條件,使用ALV報表顯示銷售訂單詳情(Sales Order、Material、現有Qty、已開立數量以及剩余數量等)信息效果展示我們在銷售訂單欄位輸入需要查詢的SO單號,這里我們以SO單號0000000221為例&#x…

《設計模式之禪》筆記摘錄 - 10.裝飾模式

裝飾模式的定義裝飾模式(Decorator Pattern)是一種比較常見的模式,其定義如下:Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternative to subclassing for extending fu…

[AI8051U入門第十步]W5500-客戶端

學習目標: 1、認識W5500模塊 2、驅動W5500靜態獲取ip 3、獲取全球唯一碼作為mac地址 4、拔出網線重插網線自動獲取IP 5、編寫W5500作為客戶端進行TCP/IP代碼一、W5500介紹 W5500 是一款由韓國 WIZnet 公司推出的高性能 硬件 TCP/IP 嵌入式以太網控制器,專為嵌入式系統設計,…

UNETR++: Delving Into Efficient and Accurate 3D Medical Image Segmentation

摘要得益于Transformer模型的成功,近期研究開始探索其在3D醫學分割任務中的適用性。在Transformer模型中,自注意力機制是核心構建模塊之一,與基于局部卷積的設計相比,它致力于捕捉長距離依賴關系。然而,自注意力操作存…

Kotlin Flow 在 Jetpack Compose 中的正確打開方式:SharedFlow vs StateFlow 與 LaunchedEffect

在 Jetpack Compose 中,Kotlin Flow 是處理異步數據流的核心工具,而 SharedFlow 和 StateFlow 是最常用的兩種 Flow 類型。但很多開發者對它們的適用場景、如何與 LaunchedEffect 配合使用存在困惑。本文將深入探討它們的區別,并給出最佳實踐…

嵌入式——C語言:指針①

一、指針特點1.讓代碼更加簡潔高效2.提供直接訪問內存的操作3.利用指針可以直接操作硬件二、指針概念(一)地址:為了區分內存中不同字節的編號(0到2^16-1)(二)指針:指針就是地址&…

RabbitMQ—HAProxy負載均衡

上篇文章: RabbitMQ—仲裁隊列https://blog.csdn.net/sniper_fandc/article/details/149312579?fromshareblogdetail&sharetypeblogdetail&sharerId149312579&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目錄 1 HAProxy安裝…

QT中啟用VIM后粘貼復制快捷鍵失效

當在QT中啟用FakeVim之后,Ctrl C 和 Ctrl V 快捷鍵就變成 Vim 的快捷鍵了,我希望它還是原來的復制粘貼功能,打開:編輯 > Preferences…,然后勾選 “Pass control keys”即可,如下:

TCP三次握手與四次揮手全解析

🌊 TCP三次握手與四次揮手全解析(含序列號動態追蹤)🔑 TCP 協議核心機制 序列號 (seq):數據字節流的唯一標識(32位循環計數器)確認號 (ack):期望接收的下一個序列號(ack …

7月26號打卡

作業:題目1:計算圓的面積 任務: 編寫一個名為 calculate_circle_area 的函數,該函數接收圓的半徑 radius 作為參數,并返回圓的面積。圓的面積 π * radius (可以使用 math.pi 作為 π 的值)要求:函數接收一…

C++/CLI與標準C++的語法差異(一)

🌌 C/CLI與標準C的語法差異(一)🔬 第一章:類型系統革命 - 徹底解構三語言范式 🧪 1.1 類型聲明語義差異矩陣 #mermaid-svg-L5kQ3iy05pKo4vIj {font-family:"trebuchet ms",verdana,arial,sans-se…

輸電線路微氣象在線監測裝置:保障電網安全的科技屏障

在電力傳輸網絡中,輸電線路微氣象在線監測裝置通過集成專業傳感器與智能分析技術,實現對線路周邊環境參數的實時采集與動態分析,為電網運行安全提供數據支撐。該設備針對輸電線路特殊工況設計,具備高適應性、高可靠性特點。工作原…

基于springboot的圖書借閱系統

用戶:借閱信息管理,續借信息管理,還書信息管理,圖書信息,系統公告,留言板,我的中心管理員:圖書信息管理,圖書類型管理,借閱信息管理,續借信息管理…

Xinference vs SGLang:詳細對比分析

概述對比特性XinferenceSGLang定位通用AI模型推理平臺高性能LLM服務框架專注領域多模態模型統一接口LLM推理性能優化設計理念易用性和兼容性性能和效率核心架構對比 Xinference 架構特點 Xinference 架構: ├── API層(REST/CLI/Python) ├─…

雙非上岸985!專業課140分經驗!信號與系統考研專業課140+上岸中南大學,通信考研小馬哥

一.經驗分享個人情況:初試總分377,政治59,英語二75、數學二103、專業課140。本科為湖南一所雙非一本,專業是電子信息工程,本科成績一般,無獎學金無評優無科研競賽,屬于三無人員&…

配置DNS正反向解析

服務端master配置:yum install bind -y配置靜態ip:修改配置文件:主:區域:正向解析:反向解析:開啟服務:客戶端node1配置:yum install nginx -y配置靜態ip:使用xftp將文…

MyBatis-Plus 通用 Service

引言 在開發 Java Web 應用程序時,我們經常需要進行大量的數據庫操作,如創建、讀取、更新和刪除(CRUD)。MyBatis-Plus 作為一個強大的 MyBatis 增強工具,為我們提供了通用 Service 接口,極大地簡化了這些操…

聚類-一種無監督分類算法

目錄 1、聚類任務 2、性能度量 (1)外部指標 (2)內部指標 3、具體聚類方法 (1)原型聚類 (2)密度聚類 (3)層次聚類 “無監督學習”(unsupervised learnin…

ES6 標簽模板:前端框架的靈活利器

ES6(ECMAScript 2015)引入的模板字符串(Template Literals)為 JavaScript 開發者提供了更簡潔的字符串處理方式,而模板字符串標簽(Tagged Template Literals)則進一步擴展了其功能性。通過標簽函…

解鎖編程核心能力:深入淺出數據結構和算法

——為什么它們是你代碼效率的終極武器? 🌟 引言:程序世界的基石 想象你正在建造摩天大樓:數據結構是鋼筋骨架,決定建筑的結構與承重能力;算法則是施工藍圖,指導如何高效完成建造。兩者結合&am…