<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Vim on T.本秋的自留地</title>
    <link>https://blog.texsd.eu.org/tags/vim/</link>
    <description>Recent content in Vim on T.本秋的自留地</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <copyright>Copyright© 2026 T.本秋. Licensed under CC BY-NC-SA 4.0.</copyright>
    <lastBuildDate>Sat, 04 Oct 2025 16:45:12 +0800</lastBuildDate><atom:link href="https://blog.texsd.eu.org/tags/vim/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>搭建基于 VSCode 的跨平台 C&#43;&#43; 学习环境</title>
      <link>https://blog.texsd.eu.org/posts/vscode_cpp_environment/</link>
      <pubDate>Sat, 04 Oct 2025 16:45:12 +0800</pubDate>
      
      <guid>https://blog.texsd.eu.org/posts/vscode_cpp_environment/</guid>
      <description>
&lt;h2 class=&#34;relative group&#34;&gt;前言
    &lt;div id=&#34;前言&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%89%8d%e8%a8%80&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;早期学习 C/C++ 是非常痛苦的，不仅被老师要求下载 20G 的宇宙 IDE VS，还得自己格式化代码，这就是我一开始对此不感冒的原因。&lt;/p&gt;
&lt;p&gt;但是随着学的东西多了，不写代码也不行啊，我才渐渐发现有那么多强大的工具我不知道。&lt;/p&gt;
&lt;p&gt;所以这里记录一下自己的折腾过程，希望能帮到初学 C++ 的朋友们。&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;准备
    &lt;div id=&#34;准备&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%87%86%e5%a4%87&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;由于我主要是在 ArchLinux 上面学习，偶尔会在 Windows 上面测试，这里大部分内容都会在 Linux 上面完成，不过别担心，这些工具都是跨平台的。&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Linux
    &lt;div id=&#34;linux&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#linux&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;很简单，直接安装这些软件包：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clang&lt;/strong&gt;  LLVM 的前端，包括了 Clangd 即语言服务器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GCC/LLVM&lt;/strong&gt; 编译器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CMake&lt;/strong&gt; 依赖管理/构建系统&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ninja&lt;/strong&gt; 构建器&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Windows
    &lt;div id=&#34;windows&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#windows&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;推荐用&lt;code&gt;scoop&lt;/code&gt;一键解决，对于这些命令行工具可以说非常方便了。&lt;/p&gt;
&lt;p&gt;需要安装的包：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;llvm-mingw&lt;/strong&gt; 包含了 clangd/clang 了&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CMake&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ninja&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果想&lt;code&gt;GCC&lt;/code&gt;的话，可以到&lt;a
  href=&#34;https://winlibs.com/&#34;
    target=&#34;_blank&#34;
  &gt;WinLibs&lt;/a&gt;下载：&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;winlibs&#34;
    width=&#34;1178&#34;
    height=&#34;175&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/winlibs_hu_631ab03401f3c031.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/winlibs_hu_631ab03401f3c031.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/winlibs.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/winlibs.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;一般来说下&lt;code&gt;UCRT&lt;/code&gt;就行了，从&lt;code&gt;win10&lt;/code&gt;之后都支持&lt;code&gt;UCRT&lt;/code&gt;的。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;安装 VSCode 不用多说了吧？&lt;/p&gt;
&lt;p&gt;安装这些拓展：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CMake Tools&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Clangd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CodeLLDB&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;extensions&#34;
    width=&#34;526&#34;
    height=&#34;460&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/extensions.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/extensions.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/extensions.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/extensions.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;CMake 拓展设置
    &lt;div id=&#34;cmake-拓展设置&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cmake-%e6%8b%93%e5%b1%95%e8%ae%be%e7%bd%ae&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;按照如图显示的配置&lt;code&gt;CMake&lt;/code&gt;生成的数据库文件，以便后续的&lt;code&gt;Clangd&lt;/code&gt;查找。&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;cmake_tools&#34;
    width=&#34;2340&#34;
    height=&#34;1094&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/cmake_tools_hu_85a62d68cb7e9971.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/cmake_tools_hu_85a62d68cb7e9971.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/cmake_tools_hu_241d9a9da34b0c4d.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/cmake_tools.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Clangd 拓展设置
    &lt;div id=&#34;clangd-拓展设置&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#clangd-%e6%8b%93%e5%b1%95%e8%ae%be%e7%bd%ae&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;填入&lt;code&gt;Clangd&lt;/code&gt;寻找数据库的位置&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;clangd&#34;
    width=&#34;2289&#34;
    height=&#34;515&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/clangd_hu_828056955515cc85.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/clangd_hu_828056955515cc85.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/clangd_hu_72983cb27b02052f.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/clangd.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;CodeLLDB 拓展设置
    &lt;div id=&#34;codelldb-拓展设置&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#codelldb-%e6%8b%93%e5%b1%95%e8%ae%be%e7%bd%ae&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;安装完可能会下载一个调试包，对网络环境要求较高，如果遇到问题可以参考&lt;a
  href=&#34;https://zhuanlan.zhihu.com/p/566365173&#34;
    target=&#34;_blank&#34;
  &gt;这篇&lt;/a&gt;文章。&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;创建项目
    &lt;div id=&#34;创建项目&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%88%9b%e5%bb%ba%e9%a1%b9%e7%9b%ae&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;

&lt;h3 class=&#34;relative group&#34;&gt;配置 CMake
    &lt;div id=&#34;配置-cmake&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e9%85%8d%e7%bd%ae-cmake&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;在你的项目根文件夹建立一个主&lt;code&gt;CMakeLists.txt&lt;/code&gt;,内容可以这么写：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cmake&#34; data-lang=&#34;cmake&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;CMAKE_EXPORT_COMPILE_COMMANDS&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 最低 CMake 版本要求
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cmake_minimum_required&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;VERSION&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;3.31&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 项目名称和语言
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;project&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;learnproj&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;VERSION&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;1.0&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;LANGUAGES&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;CXX&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 设置 C++ 标准
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;CMAKE_CXX_STANDARD&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;CMAKE_CXX_STANDARD_REQUIRED&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;CMAKE_CXX_EXTENSIONS&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;OFF&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;GLOB&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;SUB_PROJECT_DIRS&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;LIST_DIRECTORIES&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CMAKE_CURRENT_SOURCE_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/src/*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 遍历所有找到的目录
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;foreach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;SUB_DIR&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;SUB_PROJECT_DIRS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c&#34;&gt;# 检查该目录下是否存在 CMakeLists.txt 文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;IS_DIRECTORY&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;SUB_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;AND&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;EXISTS&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;${SUB_DIR}/CMakeLists.txt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c&#34;&gt;# 将该目录名打印出来，方便调试
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;get_filename_component&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;PROJECT_NAME&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;SUB_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;NAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;STATUS&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Found and added subproject: ${PROJECT_NAME}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c&#34;&gt;# 将这个文件夹作为一个子项目添加进来
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;add_subdirectory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;SUB_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;endif&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;endforeach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## 根据需要按需添加
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# # 查找 Qt 库
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 添加可执行文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# # 链接 Qt 库
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# target_link_libraries(MyQtProject PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# # 自动处理 MOC、UIC 和 RCC
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# set_target_properties(MyQtProject PROPERTIES
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#     AUTOMOC ON
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#     AUTOUIC ON
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#     AUTORCC ON
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# )
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;你可以根据自己的需要，设置 C++ 标准，扫描的文件夹，链接的库。这里就以&lt;code&gt;src&lt;/code&gt;目录放置源文件，&lt;code&gt;include&lt;/code&gt;放置头文件为例。&lt;/p&gt;
&lt;p&gt;进入&lt;code&gt;src/current&lt;/code&gt;创建一个子&lt;code&gt;CMakeLists.txt&lt;/code&gt;，内容写上：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cmake&#34; data-lang=&#34;cmake&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;get_filename_component&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;PROJECT_NAME&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CMAKE_CURRENT_SOURCE_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;NAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## 如果你需要添加别的源文件，别忘了在这里添加文件名，空白符为分隔。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;add_executable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PROJECT_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;main.cpp&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;MSVC&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;target_compile_options&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PROJECT_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;PRIVATE&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/W4&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/WX&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c&#34;&gt;## 非MSVC指定一些警告参数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;target_compile_options&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PROJECT_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;PRIVATE&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s&#34;&gt;-Wall&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s&#34;&gt;-Wextra&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s&#34;&gt;-Wpedantic&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c&#34;&gt;# -Werror 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s&#34;&gt;-Wconversion&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;endif&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## 这里指定的头文件的路径
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;target_include_directories&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PROJECT_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;PRIVATE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CMAKE_CURRENT_SOURCE_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/../../include/&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PROJECT_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;创建一个&lt;code&gt;main.cpp&lt;/code&gt;，内容可以为空，你的项目应该这样：&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;project_init&#34;
    width=&#34;2302&#34;
    height=&#34;802&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/project_init_hu_c8dfe5d5ff95c4e5.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/project_init_hu_c8dfe5d5ff95c4e5.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/project_init_hu_2fd38584822b5986.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/project_init.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;接着我们给&lt;code&gt;CMake&lt;/code&gt;生成一些预设。&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;quick_start&#34;
    width=&#34;1268&#34;
    height=&#34;657&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/quick_start_hu_61d3a0dfcf6a4a70.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/quick_start_hu_61d3a0dfcf6a4a70.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/quick_start.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/quick_start.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;快速入门 - 添加新预设 - 从编译器创建&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;create_from_compiler&#34;
    width=&#34;1239&#34;
    height=&#34;357&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/create_from_compiler_hu_d312a6337f00368.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/create_from_compiler_hu_d312a6337f00368.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/create_from_compiler.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/create_from_compiler.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;你如果只装了&lt;code&gt;Clang&lt;/code&gt;，那么用不带&lt;code&gt;cl&lt;/code&gt;的就行，同样也可以用&lt;code&gt;GCC&lt;/code&gt;，看个人喜好。&lt;/p&gt;
&lt;p&gt;输入名字，这里我是用&lt;code&gt;平台-编译器-构建器-版本&lt;/code&gt;来命名的，回车会自动生成一个&lt;code&gt;CMakePresets.json&lt;/code&gt;，像这样：&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;preset&#34;
    width=&#34;2102&#34;
    height=&#34;867&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/preset_hu_f84a5090f586bc06.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/preset_hu_f84a5090f586bc06.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/preset_hu_ecc951f003d26168.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/preset.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;因为我比较喜欢&lt;code&gt;Ninja&lt;/code&gt;，所以加入这一行。如果你想用&lt;code&gt;Make&lt;/code&gt;，那么记得手动安装。&lt;/p&gt;
&lt;p&gt;然后在这里添加新生成预设，从配置预设中构建，名字可以是构建预设后面加上&lt;code&gt;-build&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;build_preset&#34;
    width=&#34;2854&#34;
    height=&#34;951&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/build_preset_hu_b3c4efb607ab19b1.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/build_preset_hu_b3c4efb607ab19b1.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/build_preset_hu_a0b97c7d23bca8f3.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/build_preset.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;然后在这里选一下就好了：&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;choose_build_preset&#34;
    width=&#34;657&#34;
    height=&#34;462&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/choose_build_preset.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/choose_build_preset.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/choose_build_preset.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/choose_build_preset.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;下面的生成目标可以选择你的文件夹名称了：&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;choose_build_target&#34;
    width=&#34;2134&#34;
    height=&#34;400&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/choose_build_target_hu_5f3698d55187ed15.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/choose_build_target_hu_5f3698d55187ed15.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/choose_build_target_hu_f3a6d29c2dc2e179.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/choose_build_target.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;打开你的&lt;code&gt;main.cpp&lt;/code&gt;，看看&lt;code&gt;clangd&lt;/code&gt;怎么样？原来已经成功加载数据库并运行了：&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;clangd_log&#34;
    width=&#34;2982&#34;
    height=&#34;1680&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/clangd_log_hu_7bf6f851b2a929ef.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/clangd_log_hu_7bf6f851b2a929ef.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/clangd_log_hu_d312478f90a3e34f.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/clangd_log.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;随便写点东西，然后点击左下角的生成，启动，你的代码应该可以运行了。&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;build_and_run&#34;
    width=&#34;2977&#34;
    height=&#34;1673&#34;
    src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/build_and_run_hu_4ec44f1957a5f00b.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/build_and_run_hu_4ec44f1957a5f00b.webp 800w, https://blog.texsd.eu.org/posts/vscode_cpp_environment/build_and_run_hu_54fecd7a1381c0e8.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/vscode_cpp_environment/build_and_run.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;配置 task
    &lt;div id=&#34;配置-task&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e9%85%8d%e7%bd%ae-task&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;有人说，哎，我的&lt;key&gt;F5&lt;/key&gt;一键调试呢？&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;.vscode/&lt;/code&gt;下创建一个&lt;code&gt;launch.json&lt;/code&gt;，写上：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0.2.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;configurations&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;lldb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;request&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;launch&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Debug&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;program&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;${command:cmake.launchTargetPath}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;console&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;integratedTerminal&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;cwd&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;${workspaceFolder}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;大功告成！&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;后续
    &lt;div id=&#34;后续&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%90%8e%e7%bb%ad&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;

&lt;h3 class=&#34;relative group&#34;&gt;格式化
    &lt;div id=&#34;格式化&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e6%a0%bc%e5%bc%8f%e5%8c%96&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;你可能对于&lt;code&gt;Clangd&lt;/code&gt;的格式化不太满意，那么可以在项目根目录创建一个&lt;code&gt;.clang-format&lt;/code&gt;的文件，里面写上你想要的风格，具体可以去搜一下。&lt;/p&gt;
&lt;p&gt;这是我的：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# .clang-format&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 使用 LLVM 风格作为基础，这是很常见的风格&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;BasedOnStyle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;LLVM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 强制缩进宽度为 4 个空格&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;IndentWidth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 强制指针和引用靠左&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;PointerAlignment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;Left&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 强制使用空格进行缩进，而不是制表符&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;UseTab&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;Never&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 class=&#34;relative group&#34;&gt;其他
    &lt;div id=&#34;其他&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%85%b6%e4%bb%96&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;如果想添加头文件，直接往&lt;code&gt;include/&amp;lt;你的项目名字&amp;gt;&lt;/code&gt;放置即可。&lt;/p&gt;
&lt;p&gt;如果觉得项目不错，想保留代码，直接把&lt;code&gt;current&lt;/code&gt;文件夹复制一份，改个名，运行的时候到&lt;code&gt;CMake&lt;/code&gt;里面切换配置/生成目标就好。&lt;/p&gt;
&lt;p&gt;如果你想用&lt;code&gt;MSVC&lt;/code&gt;，那么可以下&lt;code&gt;VS Installer&lt;/code&gt;，里面只选构建工具，不过注意这样是没法生成&lt;code&gt;compile_commands.json&lt;/code&gt;给&lt;code&gt;Clangd&lt;/code&gt;读取的。&lt;/p&gt;
</description>
      
    </item>
    
  </channel>
</rss>
