当前位置: 首页 > news >正文

C++ 01.vscode配置c++开发环境

1. vscode配置c++开发环境

在windows下开发C++,可以使用Visual StudioVisual Studio Code进行开发。

以下是两者的简要区别

特性Visual StudioVisual Studio Code
类型集成开发环境 (IDE)轻量级代码编辑器
功能提供全面的开发工具和服务,支持多种编程语言提供代码编辑、调试和版本控制等功能,通过插件支持其他语言
用户界面功能丰富,适合复杂项目管理界面简洁,易于上手,高度可定制
易用性学习曲线较陡,适合有经验的开发者学习曲线平缓,适合初学者和快速开发
编程语言支持原生支持多种编程语言,包括C++通过安装扩展支持多种编程语言,包括C++
扩展性提供了丰富的扩展和插件生态系统,但与IDE集成得更深入具有很高的扩展性和灵活性,拥有活跃的社区和大量的第三方插件
价格有免费的社区版,但专业版和企业版需要付费许可完全免费且开源
适用场景大型和复杂的软件开发项目快速代码编写和小型项目,支持调试和版本控制

本文介绍在 Visual Studio Code 下配置 C++ 开发环境的方法。 请自行安装vcpkgcmakeVisual Studio等相关软件。

1.1. 安装插件

需要安装的插件见下图

1.2. c_cpp_properties.json

c_cpp_properties.jsonVS Code C/C++ 扩展(Microsoft 的 C/C++ 插件)的配置文件,用于定义 C/C++ 项目的编译环境、头文件路径、编译器选项等。
该文件位于 .vscode 目录下,可手动创建或通过 C/C++: Edit Configurations (UI) 命令生成。

以下是示例配置:

{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**","${VCPKG_ROOTDIR}/installed/x64-windows/include"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.22000.0","compilerPath": "cl.exe","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "windows-msvc-x64"}],"version": 4
}

1.2.1. 主要作用:

  1. 配置 IntelliSense(代码补全、语法检查)

    • includePath:指定头文件搜索路径(如系统头文件、第三方库头文件)。
    • defines:定义预处理宏(如 _DEBUGUNICODE)。
    • cStandard / cppStandard:指定 C/C++ 标准版本(如 c17c++17)。
  2. 配置编译器选项

    • compilerPath:指定使用的编译器路径(如 cl.exe 是 MSVC 编译器)。
    • intelliSenseMode:指定 IntelliSense 的编译模式(如 windows-msvc-x64 表示 MSVC 64 位模式)。
  3. 支持多配置

    • configurations 数组可定义多个环境(如 Win32Linux),方便跨平台开发。

1.2.2. 示例中的关键字段:

  • "${workspaceFolder}/**":包含工作区所有目录的头文件。
  • "${VCPKG_ROOTDIR}/installed/x64-windows/include":vcpkg 管理的第三方库头文件路径。
  • "windowsSdkVersion": "10.0.22000.0":指定 Windows SDK 版本。

修改此文件可优化代码补全和编译检查,但需与实际项目配置一致。

如果没有采用这个文件,我们在看源码时,一些系统或第三方的头文件就无法被识别,导致 IntelliSense 无法正常工作。
如下图,有红色波形线,说明 IntelliSense 无法识别 <fmt/core.h> 头文件。

以下是正确配置后的显示效果,可以看到没有红色波形线了。

1.3. CMakelists.txt

以下是示例配置:

cmake_minimum_required(VERSION 3.10)# 设置项目名称和语言
project(VulkanChecker LANGUAGES CXX)# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(fmt CONFIG REQUIRED)# 添加可执行文件
add_executable(main main.cpp)target_link_libraries(main PRIVATE fmt::fmt)# 如果是Windows系统,设置可执行文件的输出目录
if(WIN32)set_target_properties(mainPROPERTIESRUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
endif()

已经用```vcpkg install fmt`
用在命令行中执行以下语句能正确配置

# 生成构建目录并配置CMake工程
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=C:/Users/Admin/workspace/vcpkg/scripts/buildsystems/vcpkg.cmake

但如果直接用cmake进行配置,会报错
以下是进行配置

以下是报错信息

原因:
CMakeLists.txt 文件中,find_package(fmt CONFIG REQUIRED) 这一行,fmt 是一个第三方库,由于没有正确配置CMAKE_TOOLCHAIN_FILE=C:/Users/Admin/workspace/vcpkg/scripts/buildsystems/vcpkg.cmake,所以找不到fmt库。

解决办法:**

.vscode目录下,创建settings.json文件,添加以下语句

{"cmake.configureSettings": {"CMAKE_TOOLCHAIN_FILE": "C:/Users/Admin/workspace/vcpkg/scripts/buildsystems/vcpkg.cmake"}
}

注意:

  1. 建议在进行cmake 配置时,先将build目录删除,再重新生成。以免有时出现稀奇古怪的错误。

1.4. 生成可执行文件

1.4.1. 使用CMake生成可执行文件(建议)

点击build按钮,生成可执行文件,类似cmake --build build

下图两个红框处都可以生成可执行文件

1.4.2. 使用cl.exe编译器生成可执行文件

参考 VS Code C/C++ 扩展 进行相应配置
点开cpp文件的右上角进行编译和运行

当遇到遇到问题:

cl.exe build and debug active file is only usable when VS Code is run from the Developer Command Prompt for VS.

解决办法:
如果在尝试使用cl.exe构建和调试时出错,请确保您已使用代码从Visual Studio的开发人员命令提示符启动了 Code .

1.5. 设置断点&调试

可以在main.cpp中设置断点,然后点击调试按钮,即可进行调试

当然,插件的调试功能与Visual Studio的调试功能相比,还是有差别,建议使用Visual studio Code进行开发,再使用 Visual Studio进行调试。

1.6. 参考

  1. VS Code C/C++ 扩展
    Studio的调试功能相比,还是有差别,建议使用Visual studio Code进行开发,再使用 Visual Studio`进行调试。

1.6. 参考

  1. VS Code C/C++ 扩展

相关文章:

  • C++语法理解记录
  • 安卓开发用到的设计模式(1)创建型模式
  • 缺乏经验的 PCB 过孔建模方法
  • NIFI的处理器:JSLTTransformJSON 2.4.0
  • 基于LiveData和ViewModel的路线管理实现(带PopupWindow删除功能)
  • 【神经网络与深度学习】流模型的通俗易懂的原理
  • Simon J.D. Prince《Understanding Deep Learning》
  • vscode连接WSL卡住
  • jvm调优以及常见jvm问题解决等
  • chrono类 根据duration 类的周期类型得到对应的周期名称
  • 基于AI大语言模型的历史文献分析在气候与灾害重建中的技术-以海南岛千年台风序列重建为例
  • 现代生活中的健康养生之道
  • 传统Spring MVC + RESTful 与 Vue3 结合 JWT Token 验证的示例
  • 双检锁(Double-Checked Locking)单例模式
  • 管理会议最佳实践:高效协同与价值最大化
  • 卫星互联网:构建全球无缝通信网络的未来
  • C#SQLServer数据库通用访问类
  • Seata源码—8.Seata Saga模式的事务处理二
  • 线程、线程池、异步
  • OpenHarmony外设驱动使用 (九),Pin_auth
  • 手机电影网站怎么做/外链百科
  • java做网站的权限管理/网站流量排行