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

vscode+msys2+clang+xmake c++开发环境搭建

转载请标明出处:小帆的帆的专栏

安装msys2

  1. 下载msys2安装包:清华源下载地址
  2. 安装msys2:安装目录,C:\Softwares\msys64

安装cling工具链,xmake

!!!在开始菜单中启动MSYS2 CLANG64, 而不是UCRT(安装后默认启动的是UCRT)

在这里插入图片描述

确保下图红圈中是CLANG64

在这里插入图片描述
下面的命令都在msys clang命令终端中完成,依次是配置清华源安装clang工具链安装xmake

配置清华源

  1. 修改源
sed -i "s#https\?://mirror.msys2.org/#https://mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*
  1. 同步包数据库
pacman -Syu

安装clang工具链

pacman -S mingw-w64-clang-x86_64-toolchain

安装xmake

这里使用命令行安装,会自动配置代码提示。其他安装方法参考xmake官方安装教程,请确保安装完后得到一个全局可执行xmake。

注意:不要在msys cling64中安装,装完vscode-xmake插件在使用xmake: CreateProject时会报错。

关闭msys cling64命令行,以管理员模式启动一个PowerShell,执行下面的安装命令

Invoke-Expression (Invoke-Webrequest 'https://xmake.io/psget.text' -UseBasicParsing).Content

安装完成后接着执行下面的命令,否则会报权限错误

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

安装vscode

  1. 安装vscode
  2. 安装git,xmake下载包时会用到
  3. 安装vscode插件xmake
  4. 安装vscode插件CodeLLDB,安装过程中遇到网络问题参考此文手动安装
  5. 安装vscode插件clangd
  • 注意:不要安装vscode C++ 插件,会有冲突,项目构建、运行和调试可以在vscode的xmake工具栏中点击,而不是vscode右上角的运行调试按钮。

运行并调试HelloWorld项目

创建HelloWorld项目

现在我们有一个全局的xmake命令,和vscode-xmake插件,就可以在vscode中创建项目了。

  1. 创建一个项目文件夹
  2. 用vscode打开
  3. Ctrl + Shift + P打开命令面板,然后输入xmake create,选择Xmake: CreateProject,然后依次选择c++,console

得到了一个空项目

配置运行项目

Ctrl + Shift + P,然后输入xmake config,选择XMake: Configure

到这里还没有执行clang的路径,就会报错。
在这里插入图片描述

看控制台第一行,当执行XMake: Configure,就是执行了这个命令

xmake f -p windows -a x64 -m debug 

这个命令的意思是用xmake在windows平台用x64架构以debug模式编译。
具体可以通过xmake --help命令查看

f         : 是config
-p windows: 是windows平台
-a x64    :是x64架构
-m debug  :是debug模式

这里要说明两个名词:

  1. 平台:windows,linux,mingw,msys等是平台。
  2. 工具链:clang,gcc,msvc等是工具链。

例如:在windows上同时装clang和gcc,然后又在msys上装了clang,所以当指定工具链就要说是哪个平台的哪个工具链。

平台和工具链可以在vscode下方的xmake工具栏中查看和修改。
在这里插入图片描述

在xmake工具栏中修改平台为msys,架构为x86_64,模式为debug,然后再运行XMake: Configure错误还在。

在这里插入图片描述

原因是系统中还没有指定clang工具链的路径,平台指定了msys,但是xmake还是不知道clang工具链在哪。可以通过配置环境变量解决。

配置环境变量有两个选择,推荐使用方法1

  1. 方法1:添加系统环境变量,然后关闭所有vscode窗口,重启。
# 添加此环境变量到用户或系统均可
C:\Softwares\msys64\clang64\bin
  1. 方法2:设置vscode项目环境变量,然后关闭vscode中的终端再打开,不推荐使用,不同的插件都要指定环境变量,很容易莫名报错,在xmake引入包的情况下断点调试也会报错。

vscode设置环境变量的方法如下:

在vscode中修改.vscode/settings.json

{// 终端环境变量"terminal.integrated.env.windows": {"PATH": "${env:PATH};C:\\Softwares\\msys64\\clang64\\bin;"}// 调试插件CodeLLDB环境变量"lldb.launch.env": {"PATH": "${env:PATH};C:\\Softwares\\msys64\\clang64\\bin;"}// clangd命令路径// !!!!!!!!!!!!!必须加.exe!!!!!!!!!!!!!!!"clangd.path": "C:\\Softwares\\msys64\\clang64\\bin\\clangd.exe"
}

配置完成后再运行XMake: Configure就没有错误了。

在这里插入图片描述

然后点击XMake工具栏中的Build和运行,就打印hello world了

在这里插入图片描述

断点调试项目

调试时确保XMake工具栏显示时debug模式,并成功编译,直接点击XMake工具栏中的调试,会在命令行中以命令的方式触发调试

在这里插入图片描述

在.vscode/settings.json中添加

{// ...省略"xmake.debugConfigType": "codelldb", // 使用 codelldb 插件调试// ...
}

添加断点后,点击XMake工具栏中的调试按钮,断点就上来了。

在这里插入图片描述

配置clangd

点击XMake工具栏中的clangd,搜索Failed会发现有一个条错误,编译数据库载入失败。

在这里插入图片描述
原因是未指定compile_commands.json的路径,它在.vscode目录下。

通过修改.vscode/settings.json指定路径

{"clangd.arguments": [// 编译数据库(compile_commands.json 文件)的目录位置"--compile-commands-dir=${workspaceFolder}/.vscode", ]
}

指定完成之后还是不行,因为这时compile_commands.json的内容是空的

在这里插入图片描述

生成内容的方法有多种,具体查看官方文档生成compile_commands

这里通过保存xmake.lua的方法实现:

  1. 鼠标点击xmake.lua文件中任意位置,无需修改
  2. 直接Ctrl + S保存文件
  3. compile_commands.json就会生成
  • 生成compile_commands.json内容的前提是,build成功,helloworld.exe存在。

在这里插入图片描述

生成完成后,重启vscode或者命令面板中运行clangd: Restart language server,再看clangd的日志就成功加载编译数据库了。

在这里插入图片描述

配置成功后,鼠标放在代码上就会有弹出信息。

在这里插入图片描述

xmake包管理

通过xmake添加三方库,这里以fmt为例。

  1. 修改helloworld.app
#include <fmt/format.h>int main(int argc, char** argv)
{fmt::print("hello world!\n");return 0;
}

修改完成后fmt报红

  1. 添加fmt包

修改xmake.lua,添加fmt包,修改2处

add_rules("mode.debug", "mode.release")-- 修改1
add_requires("fmt")target("Hello world!")set_kind("binary")add_files("src/*.cpp")-- 修改2add_packages("fmt")
target_end()
  1. 在命令面板中运行XMake: Configure

可能会发生网络错误,可尝试配置vscode终端代理,再重新运行

配置方法,修改.vscode/settings.json

{"terminal.integrated.env.windows": {"http_proxy": "http://127.0.0.1:7890","https_proxy": "http://127.0.0.1:7890"},
}
  1. 解决cmake错误

成功下载包后在安装时会包CMAKE_MAKE_PROGRAM is not set

在这里插入图片描述
虽然安装fmt时xmake有安装cmake,但还是报错了。

解决办法有两步:

  1. msys clang64环境中安装cmake
pacman -S mingw-w64-clang-x86_64-cmake
  1. 在环境变量中添加CMAKE_GENERATOR=Ninja

再运行XMake: Configure就配置成功了。

在这里插入图片描述

  1. 构建运行

fmt包输出hello world

在这里插入图片描述

但是看代码还是一片红,接下来解决这个问题。

在这里插入图片描述

vscode中xmake引入的包找不到

修改xmake.lua,添加set_toolchains("clang"),然后重启vscode,就好了。

add_rules("mode.debug", "mode.release")
-- 修改1
set_toolchains("clang")
add_requires("fmt")target("helloworld")set_kind("binary")add_files("src/*.cpp")add_packages("fmt")
target_end()

成功后链接的是xmake仓库

在这里插入图片描述

参考

MSYS2 + VSCode 搭建 C/C++ 开发环境_哔哩哔哩_bilibili
VSCode + MSYS2 + Clang + Clangd + Xmake 配置优雅的 Windows C++ 开发环境 | 璜珀的小屋
[万字长文]Visual Studio Code 配置 C/C++ 开发环境的最佳实践(VSCode + Clangd + XMake) - 知乎
几乎无痛的VSCode+clangd+lldb+cmake配置C/C++开发环境指南 - 知乎
xmake从入门到精通8:切换编译模式 - waruqi - 博客园
msys2软件包管理工具pacman常用命令_msys2 pacman-CSDN博客
What is clangd?


http://www.mrgr.cn/news/80256.html

相关文章:

  • 移动网络的原理
  • Xcode模拟器运行报错:The request was denied by service delegate
  • 三、汇总统计
  • Android的SurfaceView和TextureView介绍
  • TOSUN同星TsMaster使用入门——2、使用TS发送报文,使用graphics分析数据等
  • CTFshow-命令执行(Web58-77)
  • 2024CAT开发测试 Web应用赛道
  • Nginx配置示例教程
  • ARM64平台实时linux操作系统xenomai4(EVL)构建安装简述
  • 使用rust语言创建python模块(pyo3+maturin)
  • 高等动力学中的正则变换
  • 在 macOS 下安装和使用 Clang Static Analyzer
  • 哈希【C++实现】
  • 2024年底-Sre面试回顾
  • 使用create-react-app创建工程时报错处理
  • 事件代理详解
  • JVM 面试题相关总结
  • 0.基础语法
  • Python面试常见问题及答案7
  • 使用Python实现两组数据纵向排序
  • 12.3【OS】
  • 5.字符串
  • 12.16周一F34-Day27打卡
  • 三七互娱Android面试题及参考答案
  • R-CNN
  • 【图像处理】利用numpy、opencv、python实现车牌检测