VS Code搭建LLVM(clang/clang++)编译环境(自己备用)

embedded/2024/11/13 9:15:35/

在MSYS2的MinGW64环境中,clang++.exe工具是为了提供一种替代的C++编译器。它基于LLVM项目,具有以下优势:

  1. 现代化特性:Clang支持最新的C++标准和语言特性,提供更好的语法解析和错误提示。
  2. 高效优化:Clang的优化技术可以生成高效的机器代码,提升程序性能。
  3. 兼容性:Clang可以与MinGW64环境中的其他工具(如GCC)兼容,方便在Windows上进行开发。
  4. 多平台支持:Clang支持多种平台和目标架构,增加了开发的灵活性。

因此,在MinGW64下包含clang++.exe是为了给开发者提供更多选择。你可以根据自己的需求选择使用GCC或Clang进行开发。

创建tasks.json

在项目根目录下创建一个 .vscode 文件夹,然后在该文件夹内创建 tasks.json 文件,添加以下内容:

{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "D:\\msys64\\mingw64\\bin\\clang++.exe","args": ["-g","${file}",  // 确保这个是你的源文件"-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"]}]}

创建launch.json

在同一 .vscode 文件夹内创建 launch.json 文件,添加以下内容以配置调试:

{"version": "0.2.0","configurations": [{"name": "Debug","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "build","miDebuggerPath": "D:\\msys64\\mingw64\\bin\\gdb.exe"}]}

c_cpp_properties.json 文件用于配置 VS Code 中 C/C++ 扩展的 IntelliSense。以下是一个示例配置,适用于使用 MinGW 的 Windows 环境:

{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}\\**","D:\\msys64\\mingw64\\include\\**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "D:\\msys64\\mingw64\\bin\\clang++.exe","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "clang-x64"}],"version": 4
}

 ---------

Clang 和 LLVM 是两个密切相关的项目,广泛用于编程语言的编译和开发。

Clang

  • 定义:Clang 是一个 C、C++ 和 Objective-C 的编译器前端。
  • 功能:提供高效的编译、良好的错误和警告信息,以及优秀的开发者工具支持。
  • 优点:开源、模块化、易于扩展,能够支持快速的编译和增量编译。

LLVM

  • 定义:LLVM 是一个编译器基础设施项目,提供了一套用于构建编译器的工具和库。
  • 功能:支持多种编程语言的编译优化、代码生成等功能。
  • 组件:包括中间表示(IR)、优化器、后端代码生成器等,能够生成高效的机器代码。

关系

  • Clang 是基于 LLVM 的前端,负责解析源代码并生成 LLVM IR,后者再通过 LLVM 的后端生成目标代码。
  • 二者结合,提供了强大的编译工具链。

应用

Clang/LLVM 被广泛应用于各种开源和商业项目,包括现代 IDE 和工具链(如 Xcode 和 Visual Studio Code)。


http://www.ppmy.cn/embedded/114076.html

相关文章

PCL 计算点云距离

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 顾名思义,这个就是计算点云中每个点到另一个点云最近的距离,之后我们可以基于这些距离做一些预处理工作。思路其实很简单,通过对点云构建kdtree并采用并行的方式实现该计算过程。 二、实现代码 ColorRamp.h #ifn…

Qt 弹出菜单右键菜单 QMenu 设置不同颜色的子项

概述 在Qt中,可以使用样式表(StyleSheet)来自定义 QMenu 的外观,包括其子项(如菜单项QAction)的颜色。但是,这通常可以设置 QMenu 的整体样式,而不能单独设置某个子项的颜色。不过&…

Excel 国产化替换新方案

前言 在当前数字化转型和信创(信息技术应用创新)战略背景下,企业对于安全性、自主可控性和高效办公工具的需求日益增加。作为一款国产自主研发的高性能表格控件,SpreadJS 正成为替换 Excel 的最佳选择。它不仅全面支持国产化认证…

info 命令:查看命令手册

一、命令简介 在 Linux 系统中,可以使用 man​ 查看普通的帮助手册。还可以使用 info​ 命令阅读 Info 格式的文档。 ​info​ 文档的特点:大量使用超链接,通过方向键将光标移动到链接的文字,按下回车键,就可以切换到…

JAVA虚拟机----JVM

(一)认识JVM JVM 是 Java Virtual Machine 的简称,意为 Java虚拟机。 虚拟机是指通过软件模拟的具有完整硬件功能的、运⾏在⼀个完全隔离的环境中的完整计算机系统。 常⻅的虚拟机:JVM、VMwave、Virtual Box。 (二)JVM运…

python脚本编译为.so速度对比

有两个好处: 产品代码保护,so文件不可读 计算能力加速,本质上编译过程为python -> c -> so文件,相当于动态语言转换为静态语言,程序执行能力和计算能力有所提升 编译为so文件后比原始python代码执行时间快2ms左…

Android mmap分析

Android mmap分析 mmap基础概念 mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作…

无人机应用新纪元:图形工作站配置推荐与硬件解析

低空经济作为国家新兴的战略性产业,正逐步成为经济高质量发展的新动力。据统计,2023年中国低空经济规模达到5059.5亿元,增速为33.8%,预计到2026年有望突破万亿元大关。政府对低空经济的发展高度重视,不仅出台了相关法规…