首页 > 其他分享 >vscode: cmake + vcpkg + clangd + lldb调试的一体化IDE配置

vscode: cmake + vcpkg + clangd + lldb调试的一体化IDE配置

时间:2024-11-06 17:41:48浏览次数:1  
标签:clangd cmake vscode clang json vcpkg 构建

目录

vscode: cmake + vcpkg + clangd + lldb调试的一体化IDE配置

介绍

cmake是一个c++的跨平台构建工具

vcpkg是c++的包管理工具,可以和cmake配合使用,方便地引入第三方库。

clangd是一个LSP(Language Server Protocol),实时提供对代码的智能提示,个人认为比vs的编译器内部错误生成器好用得多。推荐与clang编译器和libc++标准库一同使用。它们都是LLVM计划的一部分。

本教程的目标是将vscode打造为集代码提示、一键构建、包管理为一体的IDE。

让你更深入地了解c++构建的方方面面。

需求

  • 系统:windows11

  • 有可用的c/c++编译器:MSVC、clang、gcc等(需要加入环境变量)

    本教程包含clang编译器的下载,可以不提前准备。

  • 本地git(加入环境变量)

  • 基本的电脑知识

  • 基本的c++构建过程理解

  • 网络环境

准备工作

  • 下载vcpkg

    1. 打开任意终端,git clone

      git clone https://github.com/microsoft/vcpkg.git

    2. 运行启动脚本

      cd vcpkg:移动到下载好的目录

      .\bootstrap-vcpkg.bat:执行安装脚本

    3. 添加环境变量

      复制vcpkg的安装目录。

      添加一个环境变量,名为VCPKG_ROOT,值为安装目录。用于以后脚本配置的路径变量。

      添加一个path环境变量,值为安装目录。便于其他程序查找vcpkg,

  • 下载cmake

    下载地址:https://cmake.org/download/

    选择Windows x64 installer。

    安装时选择添加到环境变量。

  • 下载llvm包

    下载地址:https://github.com/llvm/llvm-project/releases

    选择第一个,展开Assets。

    下载Assets中的llvm-版本·windows-X64.tar.xz

    解压到一个文件夹。

    将文件夹中的bin目录加到path环境变量。

    bin中包含了我们下一步需要使用的clangd.execlang++.exe等等。

vscode插件配置

  • clangd

[!NOTE]

vscode中使用ctrl + ,进入设置

​ 设置搜索clangd:path,输入clangd.exe的绝对路径。

​ 在项目根目录创建一个文件.clangd

​ 用来控制代码提示的一些细节。将它放在项目根目录下(否则clangd可能找不到)。

​ 以下是本教程中必要的一个设置,复制到.clangd中:

CompileFlags:
    CompilationDatabase: "path/to/your/compile_commands.json"

[!NOTE]

path/to/your 意思就是找到这个文件的路径,复制进去,路径因人而异。

compile_commands.json是CMake开放给LSP的一个文件,它给出了项目构建命令,便于LSP查找所需的头文件,给出代码提示。它现在还未生成,先不着急。

  • clang-format

​ 设置搜索clang-format:Executable,输入clang-format.exe的绝对路径。

​ 设置搜索default formatter,选择clang-format

(可选) 在设置中启用format on save,然后保存就可以格式化代码了。

(可选) 设置搜索clang format style,输入你想要的代码规范(比如google、LLVM),或者写一个.clang-format文件,使用file:path\to\your\.clang-format来指定格式化细节。具体编写方式自行搜索。

  • codelldb

用于调试,点击侧边栏的“运行与调试”,开始调试,因为你现在没有launch.json,他会帮你生成一个,类似于

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug",
            "program": "${workspaceFolder}/<executable file>",
            "args": [],
            "cwd": "${workspaceFolder}"
        }
    ]
}

修改program的值,路径指向编译生成的可执行文件(先不着急,因为还没配置cmake)。

  • cmake, cmake tools(两个插件)

​ 搜索cmake path,输入上一步安装的cmake的绝对路径。

[!NOTE]

绝对路径的意思是从盘符(C:、D:等)开始,一直到你所需文件的完整路径。

项目配置文件

vcpkg的两个文件:

vcpkg用于指定项目依赖的文件。

  1. 生成清单文件:

    [!NOTE]

    按 ctrl + `打开终端

​ 打开vscode内置终端,输入vcpkg new --application

​ 会生成vcpkg.jsonvcpkg-configuration.json文件

  1. 终端输入vcpkg add port fmt(测试用,fmt是一个常见的c++格式输出库)

    可以看到vcpkg.json中添加了一个fmt,这就是vcpkg给项目添加的依赖库。

CMakeLists.txt:

CMake构建所必须的脚本文件,它指定了项目的相关信息。

新建在项目目录下。

cmake_minimum_required(VERSION 3.10)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
#构建时生成compile_commands.json(重要)

project(test)
#项目名

find_package(fmt CONFIG REQUIRED)
#让cmake去找fmt这个第三方库

add_executable(test path/to/your/源文件)
#编译目标文件

target_link_libraries(main PRIVATE fmt::fmt)
#指定要链接的第三方库
)

CMakePresets.json

CMake tools的相关命令所需的预设文件。

新建在项目目录下。

{
    "version": 8,
    "configurePresets": [
        {
            "name": "vcpkg",
            "generator": "Ninja",
            "binaryDir": "${sourceDir}/out",//构建目录
            "cacheVariables": {
                "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"//vcpkg和cmake之间的联动
            }
        }
    ]
}

这里面CMAKE_TOOLCHAIN_FILE是最重要的,其中使用到了第一步中设置的VCPKG_ROOT环境变量,一定要保证设置成功。

vcpkg.cmake这个文件指定了cmake如何去查找第三方库,这直接决定了CMakeLists.txt中的find_package能否成功找到。

尝试构建

#include <fmt/core.h>

int main(){
    fmt::print("Hello,world!");
}

以上是示例程序。

  1. ctrl + shift + p
  2. 输入Cmake:Configure。在这一步中,CMake会尝试下载要求的第三方库。
  3. 如果成功了(return 0),输入Cmake:Build,尝试构建可执行程序。[build] Build finished with exit code 0说明构建成功,否则失败。如果失败了,注意构建信息中的Error信息,尝试理解一下。
  4. 输入Cmake: run without debugging运行程序。

如果以上操作都成功了,终端输出Hello,world!,以后一个Cmake: run without debugging就可以运行程序了,可以为它设置一个键盘快捷方式(ctrl + k + s打开设置)。

前面未完成的工作

  • clangd:如果构建并运行成功了,在你指定的构建目录下应该有一个compile_commands.json文件,复制文件地址,在.clangd中填到CompilationDatabase:后面。命令面板输入restart language server,如果智能提示出现,说明clangd配置完成。

  • lldb调试:launch.jsonprogram:后填入构建目录下的可执行程序的地址。

    按f5尝试开始debug。如果提示找不到文件,看看路径填对没有。

总结

clangd、cmake、vcpkg的入门到此结束,在使用中出现的问题都可以google搜索,99%的问题都已经有了答案。

标签:clangd,cmake,vscode,clang,json,vcpkg,构建
From: https://www.cnblogs.com/yuzujr/p/18530675

相关文章

  • CMake使用
    可见性修饰符和目标cmake中有三种可见性修饰符:PRIVATE、PUBLIC和INTERFACE这些修饰符随着命令一起使用,如target_include_directories和target_link_libraries等这些修饰符是在目标targets的上下文中指定的目标targets是指在cmake中某种类型的输出:可执行目标add_executable生......
  • Cmake 实操 -- 使用文件操作命令添加源码文件并移除失效问题记录
    搜索文件使用file(GLOB_RECURSEfileListsearchDir/*.cpp)搜索searchDir目录下所有cpp文件,将路径保存到fileList中。GLOB_RECURSE:启用递归搜索。ps:searchDir不会被展开,如果searchDir中存在C/test/../test1,保存到fileList中的文件路径将仍然带有C/test/../test1,而不是C/test1......
  • 从编译链接到cmake
    .c(.cpp)文件到可执行文件对于一份简单的.c/.cpp为后缀的源文件,他所使用的语言是人类可以阅读并看懂的,但是对于计算机来说,其可理解并执行的是二进制的机器码。也就是说,计算机所能运行的是二进制的机器码,而早期为了方便人类阅读,使用一些简单的助记符来代替机器码,比如MOV,LOOP.........
  • ROS机器人编程<六>:了解ROS系统及使用VScode实现话题通信(C++)
    目录ROS中基本的通信机制:一、话题通信:1.话题通信定义与基本概念2.核心要素3.工作流程4.消息接口与数据类型二、vscode实现话题通信三、C++实现话题通信 要求:编写发布订阅实现,要求发布方以10HZ(每秒10次)的频率发布文本消息,订阅方订阅消息并将消息内容打印输出1.在......
  • windows安装cmake、opencv、qt
    配置工具1、准备好我们的安装包:2、创建一个不含中文路径文件夹:3、双击cmake安装包:(安装过程略过)勾选选择的时候注意可以选择自动添加到环境变量。安装完成后可以通过win+R键输入cmake-gui.exe去检验环境变量是否配置成功,如果可以打开则配置成功。4、双击opencv-3.4......
  • vscode远程连接服务器
    VSCode远程连接服务器安装VSCode软件官网:DownloadVisualStudioCode-Mac,Linux,WindowsRemoteSSH插件连接服务器需要通过RemoteSSH扩展插件。安装好插件之后左侧会多一个RemoteExplorer的选项配置SSH文件回车继续点击3那两个按钮均可连接服务器开始连接之后......
  • 使用cmake构建一个动态库的例子
    接触cmake很多年了,但是从来没自己写一个完整的CMakeLists.txt构建过自己的动态库,因为工作以来动态库我都是用别人开源的,基本没有构建自己动态库的需求。今天需要将一个使用automake构建的老库替换为cmake来构建于是了解了一些相关细节,准备迁移过来。极简例子以C语言为例,一个动态......
  • cmake简介以及入门使用教程
    目录cmake是什么安装简单使用流程一个简单的demo命令解析这篇文章是比较简单的入门使用指南,所以很多内容并不会具体展开,主要是为了让一些不懂cmake的人有一个直观的认识,cmake远不止这篇文章里讲的那么简单,cmake非常强大。cmake是什么我们都知道要生成一个C++可执行......
  • Visual Studio Code(VSCode)中设置中文界面
    在VisualStudioCode(VSCode)中设置中文界面,你可以采用以下几种方法,以下是详细步骤:方法一:通过设置菜单设置中文打开VSCode:首先,确保你已经打开了VSCode软件。进入设置:点击菜单栏中的“文件”(File)选项。在下拉菜单中选择“首选项”(Preferences)。点击“设置”(Settings)。搜索并设置语......
  • vscode调式LUA(EmmyLua)
    安装EmmyLUA插件或者在github中下载https://github.com/EmmyLua/VSCode-EmmyLuahttps://github.com/jiehuali/VSCode-EmmyLua.git增加调试Launch.json打开文件夹后会变成createalauncher.json,点击RunAndDebug,选择EmmyLuaNewDebugger(这个是作者推荐的,更稳定些,前面两......