<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>狼魔宇</title>
    <link>https://www.mtueih.com/</link>
    <description>分享技术知识、经验与资源。</description>
    <language>zh-CN</language>
    <copyright>All rights reserved 2026, 狼魔宇</copyright>
    <lastBuildDate>Sat, 23 May 2026 13:37:07 GMT</lastBuildDate>
    <generator>Hexo</generator>
    <image>
      <url>https://www.mtueih.com/web-app-manifest-512x512.png</url>
      <title>狼魔宇</title>
      <link>https://www.mtueih.com/</link>
    </image>
    <atom:link href="https://www.mtueih.com/rss2.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Windows 一条命令开启 UTF-8（使用 Unicode UTF-8 提供全球语言支持）</title>
      <link>https://www.mtueih.com/posts/windows-utf-8/</link>
      <description>
        <![CDATA[<h2 id="手动开启步骤">手动开启步骤</h2>
<ol>
<li>【控制面板】-&gt;【更改日期、时间或数字格式】-&gt;【管理】-&gt;【更改系统区域设置】；</li>
<li>勾选【Beta 版：使用 Unicode UTF-8 提供全球语言支持】；</li>
<li><strong>重启</strong>。</li>
</ol>
<h2 id="原理">原理</h2>
<p>开启【Beta 版：使用 Unicode UTF-8 提供全球语言支持】本质上是修改<strong>注册表</strong>的 3 个键的值为]]>
      </description>
      <author>狼魔宇</author>
      <category domain="https://www.mtueih.com/categories/system-maintenance/">系统维护</category>
      <category domain="https://www.mtueih.com/categories/system-maintenance/windows/">Windows</category>
      <category domain="https://www.mtueih.com/tags/windows/">Windows</category>
      <category domain="https://www.mtueih.com/tags/utf-8/">UTF-8</category>
      <category domain="https://www.mtueih.com/tags/unicode/">Unicode</category>
      <category domain="https://www.mtueih.com/tags/multi-language/">多语言</category>
      <category domain="https://www.mtueih.com/tags/encoding/">编码</category>
      <pubDate>Tue, 24 Feb 2026 01:52:20 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="手动开启步骤">手动开启步骤</h2><ol><li>【控制面板】-&gt;【更改日期、时间或数字格式】-&gt;【管理】-&gt;【更改系统区域设置】；</li><li>勾选【Beta 版：使用 Unicode UTF-8 提供全球语言支持】；</li><li><strong>重启</strong>。</li></ol><h2 id="原理">原理</h2><p>开启【Beta 版：使用 Unicode UTF-8 提供全球语言支持】本质上是修改<strong>注册表</strong>的 3 个键的值为 <code>65001</code>：</p><p><code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage</code> 下的 <code>ACP</code>、<code>MACCP</code> 和 <code>OEMCP</code>；</p><p>这 3 个键含义分别如下：</p><ul><li><code>ACP</code>：ANSI Code Page，<strong>Windows 系统默认的 ANSI 代码页</strong>，用于 Win32 API 的 ANSI 版本（如 <code>CreateFileA</code> 等以 <code>A</code> 结尾的 API）；</li><li><code>MACCP</code>：Mac Code Page，<strong>Macintosh 系统兼容用的代码页</strong>，用于与 Mac 系统的字符编码兼容；</li><li><code>OEMCP</code>：OEM Code Page，<strong>原始设备制造商代码页</strong>，主要用于控制台（CMD）、批处理文件和 MS-DOS 兼容程序。</li></ul><h2 id="一条命令开启🌟">一条命令开启🌟</h2><div class="note info flat"><p>以下两种都需要以<strong>管理员</strong>身份执行。</p></div><div class="note success flat"><p>建议修改完后<strong>立即</strong>重启系统。</p></div><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">PowerShell</button><button type="button" class="tab">CMD</button></div><div class="tab-contents"><div class="tab-item-content active"><p>Windows Powershell 和 Powershell 都行。</p><pre class="line-numbers language-powershell" data-language="powershell"><code class="language-powershell"><span class="token function">Set-ItemProperty</span> <span class="token operator">-</span>Path <span class="token string">"HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage"</span> <span class="token operator">-</span>Name <span class="token string">"ACP"</span> <span class="token operator">-</span>Value <span class="token string">"65001"</span><span class="token punctuation">;</span> <span class="token function">Set-ItemProperty</span> <span class="token operator">-</span>Path <span class="token string">"HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage"</span> <span class="token operator">-</span>Name <span class="token string">"MACCP"</span> <span class="token operator">-</span>Value <span class="token string">"65001"</span><span class="token punctuation">;</span> <span class="token function">Set-ItemProperty</span> <span class="token operator">-</span>Path <span class="token string">"HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage"</span> <span class="token operator">-</span>Name <span class="token string">"OEMCP"</span> <span class="token operator">-</span>Value <span class="token string">"65001"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></div><div class="tab-item-content"><pre class="line-numbers language-cmd" data-language="cmd"><code class="language-cmd">reg add &quot;HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage&quot; &#x2F;v ACP &#x2F;t REG_SZ &#x2F;d 65001 &#x2F;f &amp;&amp; reg add &quot;HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage&quot; &#x2F;v MACCP &#x2F;t REG_SZ &#x2F;d 65001 &#x2F;f &amp;&amp; reg add &quot;HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage&quot; &#x2F;v OEMCP &#x2F;t REG_SZ &#x2F;d 65001 &#x2F;f<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h2 id="恢复">恢复</h2><div class="note info flat"><p>语言不同，这 3 个注册表键的默认值就不同，以下以中文为例，具体可根据情况修改。</p></div><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">PowerShell</button><button type="button" class="tab">CMD</button></div><div class="tab-contents"><div class="tab-item-content active"><pre class="line-numbers language-powershell" data-language="powershell"><code class="language-powershell"><span class="token function">Set-ItemProperty</span> <span class="token operator">-</span>Path <span class="token string">"HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage"</span> <span class="token operator">-</span>Name <span class="token string">"ACP"</span> <span class="token operator">-</span>Value <span class="token string">"936"</span><span class="token punctuation">;</span> <span class="token function">Set-ItemProperty</span> <span class="token operator">-</span>Path <span class="token string">"HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage"</span> <span class="token operator">-</span>Name <span class="token string">"MACCP"</span> <span class="token operator">-</span>Value <span class="token string">"10008"</span><span class="token punctuation">;</span> <span class="token function">Set-ItemProperty</span> <span class="token operator">-</span>Path <span class="token string">"HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage"</span> <span class="token operator">-</span>Name <span class="token string">"OEMCP"</span> <span class="token operator">-</span>Value <span class="token string">"936"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></div><div class="tab-item-content"><pre class="line-numbers language-cmd" data-language="cmd"><code class="language-cmd">reg add &quot;HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage&quot; &#x2F;v ACP &#x2F;t REG_SZ &#x2F;d 936 &#x2F;f &amp;&amp; reg add &quot;HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage&quot; &#x2F;v MACCP &#x2F;t REG_SZ &#x2F;d 10008 &#x2F;f &amp;&amp; reg add &quot;HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage&quot; &#x2F;v OEMCP &#x2F;t REG_SZ &#x2F;d 936 &#x2F;f<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div>]]>
      </content:encoded>
    </item>
    <item>
      <title>Windows 搭建 C/C++ 编译环境保姆级教程（MSYS2 + MinGW-w64）</title>
      <link>https://www.mtueih.com/posts/msys2-mingw-w64-setup/</link>
      <description>基于 MSYS2 + Pacman 包管理器，在 Windows 上轻松搭建 MinGW-w64 GCC 编译环境，享受滚动更新和类 Unix 开发体验。</description>
      <author>狼魔宇</author>
      <category domain="https://www.mtueih.com/categories/programming/">编程</category>
      <category domain="https://www.mtueih.com/categories/programming/c-cpp/">C/C++</category>
      <category domain="https://www.mtueih.com/categories/programming/c-cpp/environment-setup/">环境搭建</category>
      <category domain="https://www.mtueih.com/tags/windows/">Windows</category>
      <category domain="https://www.mtueih.com/tags/c/">C</category>
      <category domain="https://www.mtueih.com/tags/c/">C++</category>
      <category domain="https://www.mtueih.com/tags/mingw-w64/">MinGW-w64</category>
      <category domain="https://www.mtueih.com/tags/msys2/">MSYS2</category>
      <category domain="https://www.mtueih.com/tags/gcc/">GCC</category>
      <pubDate>Thu, 05 Feb 2026 07:47:16 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="什么是-C-C-编译环境（了解请跳过）">什么是 C/C++ 编译环境（了解请跳过）</h2><h3 id="开发环境-编译环境">开发环境 &amp; 编译环境</h3><h4 id="开发环境">开发环境</h4><p><strong>开发环境</strong>（在信息技术领域，开发通常都是指<em>软件开发</em>）是我们完成软件开发这件事的整个流程所需要的整个软件环境，而软件开发这件事，通常包含<strong>生产代码</strong>和<strong>构建最终软件产品</strong>两个部分。那么所谓的开发环境，通常就包含，直接支持或间接辅助我们生产代码的<strong>代码编辑软件</strong>，以及，直接参与或间接辅助生成最终软件产品的一系列<strong>最终软件构建软件</strong>。</p><p>通常我们<strong>搭建开发环境</strong>，都会直接安装 <strong>IDE</strong>，即<strong>集成开发环境</strong>。所谓集成开发环境，就是它把开发所需要的各种零碎的东西都打包好了，比如用来编辑代码的<strong>编辑器</strong>、用来把代码翻译成可执行文件的<strong>编译器</strong>、用来调试代码的<strong>调试器</strong>等。IDE 的优点是开箱即用，安装一个 IDE，立马就可以开始开发了，所以很多课程、教学最开始都会推荐新手安装 IDE。但 IDE 也有缺点，就是隐藏编译细节（对编译过程有一定的了解还是很有必要的）和捆绑（很不方便控制编译过程中的某些细节）。</p><h4 id="编译环境">编译环境</h4><p>而<strong>编译环境</strong>，是开发环境中只负责<em>构建最终软件产品</em>的部分。</p><p>为什么要独立搭建编译环境，而不总是搭建完整的开发环境？因为：</p><ul><li>我们有时候只需要参与<em>构建最终软件产品</em>，不需要参与<em>生产代码</em>（比如很多开源软件，都支持下载源代码后自己编译）；</li><li>能够帮助我们理解<em>软件开发</em>的本质；</li><li>能够更灵活地组建开发环境；</li><li>能够更便捷地编译简单的项目。</li></ul><h3 id="C-C-编译环境">C/C++ 编译环境</h3><p>不同的编程语言（这里主要指编译型语言，因为另一种语言，解释型语言，往往需要执行环境而不是编译环境），编译环境所需要的工具会有所不同，并且往往不止需要一个工具，比如 C/C++ 语言需要<strong>链接器</strong>。因此，我们将从源代码到可执行文件的编译过程中所需要的一系列工具，称为<strong>编译工具链</strong>，更准确些。</p><p>Linux 平台往往自带 C/C++ 的编译环境，即使没有，搭建它也非常简单，通常只需要一个命令，比如 <code>sudo apt install gcc</code>。这导致我们经常认为，搭建编译环境，就等于安装编译器，这种说法没错，但不严谨。重要的是我们要理解我们经常挂在嘴边的“编译器”意味着什么。</p><p>通常我们通过 <code>sudo apt install gcc</code> 安装的，不光是 <code>gcc</code> 这个我们常用的命令，还有其它命令行工具，以及<strong>标准库</strong>（标准头文件，以及实现它们的库文件等），它们构成了一个完整的编译工具链。</p><p>所以，C/C++ 编译环境，或者说 <strong>C/C++ 编译工具链</strong>，实际上可以分为</p><ul><li>一系列编译用的可执行文件；</li><li>一系列标准库文件。</li></ul><h2 id="Windows-平台上有哪些主流-C-C-编译环境">Windows 平台上有哪些主流 C/C++ 编译环境</h2><p>这里我们只考虑最终生成的是 Windows 可执行程序的编译环境（排除 WSL、虚拟机、兼容层等）：</p><ul><li><strong>MSVC</strong>（<strong>M</strong>icro<strong>s</strong>oft <strong>V</strong>isual <strong>C</strong>++），Windows 平台原生编译工具链，对 Windows 平台兼容性最好，开发原生 Windows 程序的首选，Visual Studio 深度集成；</li><li><strong>MinGW-w64</strong>（<strong>Min</strong>imalist <strong>G</strong>NU for <strong>W</strong>indows <strong>64</strong>-bit），GCC 工具链的移植，因为是移植所以没有官方提供统一安装包，所有编译好可直接安装的版本，几乎都是第三方项目，作为子工具，以工具包的形式发布，这也就导致了各种工具包所包含的工具不统一；</li><li><strong>Clang</strong>，Clang 是和 GCC 不相上下的一款 C/C++ 编译工具链，并且它有一个优点，就是官方提供编译、打包好的安装包，不过包含内容太过全面，很多内容已经超出编译环境的范畴，比如代码格式化工具等。</li></ul><h3 id="为什么选择-MinGW-w64">为什么选择 MinGW-w64</h3><p>就因为它是 GCC 的移植。GCC 是对 C/C++ 标准支持最好的编译器，我们可以简单看一张图：</p><p><img src="/img/msys2-mingw-w64-setup/00-c23-support.webp" alt="C 编译器对 C23 支持情况表格"></p><p>另外使用 MinGW-w64 还有以下优点：</p><ul><li>类似在 Linux 上的使用体验；</li><li>对命令行编译友好；</li><li>对跨平台开发支持最好。</li></ul><h3 id="安装-MinGW-w64-的方法有哪些">安装 MinGW-w64 的方法有哪些</h3><p>之前也说过，MinGW-w64 没有官方提供统一安装包，所以就导致了安装它的方法有很多，有以下这些工具包包含 MinGW-w64（数据来源于<br><a href="https://www.mingw-w64.org/downloads/#pre-built-toolchains-and-packages">MinGW-w64 官网</a>）：</p><ul><li>Cygwin，通过兼容层模拟 Unix 环境，让 Unix 软件在 Windows 上运行，它生成的不是原生的 Windows 程序，所以排除；</li><li>LLVM-MinGW，并不是 GCC + MinGW-w64，而是 Clang + MinGW-w64，所以排除；</li><li>MinGW-W64-builds，提供完整的 GCC 工具链，由个人开发者维护；</li><li>MSYS2，提供类 Unix 命令行环境，但通过它安装的 MinGW-w64 可以生成原生的 Windows 程序；</li><li>w64devkit，极简、便捷的 GCC 工具链；</li><li>WinLibs，同时支持 GCC 和 Clang。</li></ul><div class="note info flat"><p>严格意义上来说，MinGW-w64 与 GCC 没有直接关系，通常我们认为的，以及本文大部分情况所说的 MinGW-w64 是完整的 GCC 工具链，这是由于 MinGW-w64 的前身 MinGW 提供完整的 GCC 工具链，而 MinGW-w64 只包含前文所述编译工具链的标准库部分。下图是<a href="https://www.mingw-w64.org/">官网</a>的介绍：</p><p><img src="/img/msys2-mingw-w64-setup/01-mingw-intro.webp" alt="MinGW-w64 官网介绍"></p></div><h3 id="为什么选择-MSYS2">为什么选择 MSYS2</h3><p>在众多的工具包中，我们选择 MSYS2。MSYS2 相较于其它<strong>并不是最便捷</strong>的，并且它本身并不是我们要安装的工具链，而是一个模拟 Unix 环境的命令行工具。那么为什么选择 MSYS2 呢？</p><ul><li><strong>能够保证工具链版本是最新的</strong>，MSYS2 移植了著名 Linux 发行版 Arch Linux 上的包管理器 Pacman，而 Pacman 采用滚动更新机制；</li><li><strong>我们在需要时能够按需添加其它工具</strong>，MSYS2 项目提供了一个包管理器，并且 MSYS2 项目还维护了很多工具（比如我们要安装的工具链的命令行工具部分是由 MSYS2 项目维护的）；</li><li><strong>安装和更新方便</strong>，由于其使用包管理器，所以安装和更新工具包往往只需要一行命令；</li><li><strong>提供类 Unix 环境</strong>，使得我们能获得更贴近 Unix 环境的使用体验。</li></ul><h2 id="【第一步】下载安装-MSYS2">【第一步】下载安装 MSYS2</h2><h3 id="方式一：通过-WinGet-安装（推荐）">方式一：通过 WinGet 安装（推荐）</h3><p>这种方法适用于支持 WinGet 的 Windows 版本，通常是 Windows 10 及以上。</p><p>打开终端，输入以下命令：</p><pre class="line-numbers language-powershell" data-language="powershell"><code class="language-powershell">winget install MSYS2<span class="token punctuation">.</span>MSYS2<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>等待安装完成即可。</p><p>以上命令默认会执行静默安装（安装过程中的自定义选项会自动应用默认值），如果你想要自定义安装选项，可以使用以下命令以执行交互式安装。</p><pre class="line-numbers language-powershell" data-language="powershell"><code class="language-powershell">winget install MSYS2<span class="token punctuation">.</span>MSYS2 <span class="token operator">--</span>interactive<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>如果你的 Windows 版本不支持 WinGet，或者你不想通过 WinGet 安装，请使用下面的方式。</p><h3 id="方式二：通过安装包安装">方式二：通过安装包安装</h3><p>你可以进入 <a href="https://www.msys2.org/">MSYS2 官网</a> 自行下载安装包并安装，也可以参考下面的步骤。</p><p>1、进入 <a href="https://www.msys2.org/#installation">MSYS2 官网</a>：</p><p><img src="/img/msys2-mingw-w64-setup/02-msys2-download.webp" alt="从 MSYS2 官网下载安装包"></p><p>根据自己的平台情况选择相应的下载按钮并点击它以下载安装包，然后等待下载完成。</p><p>2、运行安装包：</p><p>首先映入眼帘的是欢迎界面，直接点【Next】以开始安装流程：</p><p><img src="/img/msys2-mingw-w64-setup/03-msys2-welcome.webp" alt="MSYS2 安装步骤：欢迎界面"></p><p>之后进入安装路径选择界面。</p><p>3、指定安装路径，然后点击【Next】：</p><p>安装路径<strong>建议保持默认</strong>。如果需要修改，也请注意，路径中不要包含中文、空格等非 ASCLL 字符，这一点一直是软件开发领域的共识。如果修改了安装路径，请暂时记住它，因为一会需要用到这个路径。</p><p><img src="/img/msys2-mingw-w64-setup/04-msys2-path.webp" alt="MSYS2 安装步骤：选择安装路径"></p><p>然后进入开始菜单文件夹选择界面。</p><p>4、指定开始菜单文件夹，然后点击【Next】：</p><p>这一步通常都没有修改的必要，它和 MSYS2 的安装位置没有任何关系，只是相关的快捷方式被放在哪而已。</p><p><img src="/img/msys2-mingw-w64-setup/05-msys2-startmenu.webp" alt="MSYS2 安装步骤：选择开始菜单文件夹"></p><p>然后就正式开始安装了：</p><p><img src="/img/msys2-mingw-w64-setup/06-msys2-installing.webp" alt="MSYS2 安装步骤：等待安装"></p><p>不出意外的话，一会儿之后就安装完成了：</p><p><img src="/img/msys2-mingw-w64-setup/07-msys2-finish.webp" alt="MSYS2 安装步骤：完成"></p><p>此界面中，【Run MSYS now.】（安装过程结束后立即运行 MSYS2）根据自己情况进行选择即可，然后点击【Finish】以结束安装流程。</p><h2 id="【第二步】安装-MinGW-w64">【第二步】安装 MinGW-w64</h2><p>1、打开 MSYS2。</p><p>首次打开 MSYS2，我们先输入以下命令，以同步软件包数据库并升级所有软件包（这是包管理器常规操作）：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">pacman <span class="token parameter variable">-Syu</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>以上命令执行过程中，出现任何询问<strong>直接回车</strong>（回车与输入 <code>y</code> 是等效的）即可，有可能需要重启 MSYS2 才能完成更新，重新启动后再执行一遍，确保更新完成（如果不确定就多跑几遍，直到结果出现“there is nothing to do”，如下图）。</p><p><img src="/img/msys2-mingw-w64-setup/08-msys2-update.webp" alt="MSYS2 更新完成"></p><p>2、安装 MinGW-w64：</p><p>MSYS2 提供了 3 种使用 GCC 的 MinGW-w64 工具链，分别是：</p><table><thead><tr><th>工具链</th><th>包名</th></tr></thead><tbody><tr><td><strong>mingw32</strong></td><td><code>mingw-w64-i686-gcc</code></td></tr><tr><td><strong>mingw64</strong></td><td><code>mingw-w64-x86_64-gcc</code></td></tr><tr><td><strong>ucrt64</strong></td><td><code>mingw-w64-ucrt-x86_64-gcc</code></td></tr></tbody></table><p>三者区别在于生成的 Windows 程序的架构不同，或使用的 <strong>C 运行时库</strong>不同：</p><ul><li>mingw32 用于生成 32 位 Windows 应用程序，其它两个生成的都是 64 位；</li><li>ucrt64 使用了较新的 <strong>C 运行时库</strong>，其它两个使用了较老的 <strong>C 运行时库</strong>。</li></ul><p>目前最推荐使用的是 ucrt64，这里就以它为例，当然如果你有特殊需求也可以安装别的，并且可以同时安装多个。在 MSYS2 中输入以下命令安装：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">pacman <span class="token parameter variable">-S</span> mingw-w64-ucrt-x86_64-gcc<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>然后等待命令执行完成即可。</p><h2 id="【第三步】配置环境变量（可选）">【第三步】配置环境变量（可选）</h2><p>安装完就可以使用了，MSYS2 提供了几种开箱即用的 Shell 环境：</p><p><img src="/img/msys2-mingw-w64-setup/09-msys2-shell.png" alt="MSYS2 提供的多种 Shell 环境"></p><p>它们分别针对不同的 C/C++ 标准库、编译器工具链以及目标架构。比如，如果你刚才安装的是 ucrt64，那么在 MSYS2 UCRT64 环境中，gcc 等命令是直接可用的，相当于直接附带了对应工具链的 Path。</p><p>总之，使用 MSYS2 的 Shell 环境，就不需要配置环境变量。但如果你想要在其他 Shell 中使用，那么就需要针对 Windows 系统配置环境变量了，如果你熟悉，可以自行配置，或者可以参考下面的步骤。</p><p>1、找到 MinGW-w64 的安装路径</p><p>在配置环境变量前，我们要找到 MinGW-w64 的安装路径，这取决于两个因素，你的 MSYS2 的安装路径，以及你安装了哪个工具链（如果安装了多个，那么只能同时配置一个，这个很容易理解）。</p><p>1.1、首先找到 MSYS2 的安装路径，以默认的 <code>C:\msys64</code> 为例，在此路径下有 3 个文件夹，分别对应之前说的 3 种工具链：</p><p><img src="/img/msys2-mingw-w64-setup/10-msys2-folders.webp" alt="MSYS2 安装路径下的文件夹"></p><p>1.2、选择你所安装的工具链对应的文件夹，这里以 <code>ucrt64</code> 为例，该文件夹下的 <code>bin</code> 文件夹的路径，就是我们要添加到 Path 变量中的值：</p><p><img src="/img/msys2-mingw-w64-setup/11-bin-folder.webp" alt="MinGW-w64 安装路径下的 bin 文件夹"></p><p>因此，我们需要在 Path 变量中添加的路径为 <code>C:\msys64\ucrt64\bin</code>。</p><p>2、配置 Path 环境变量</p><p>2.1、键盘按 <kbd>Win + R</kbd> 打开运行窗口，输入 <code>sysdm.cpl</code> 回车，打开系统属性窗口：</p><p><img src="/img/msys2-mingw-w64-setup/12-env-run.webp" alt="配置 Windows 环境变量：运行窗口输入 sysdm.cpl"></p><p>2.2、依次点击【高级】、【环境变量】，找到【系统变量】的【Path】变量，双击它：</p><p><img src="/img/msys2-mingw-w64-setup/13-env-advanced.webp" alt="配置 Windows 环境变量：点击高级"></p><p><img src="/img/msys2-mingw-w64-setup/14-env-vars.webp" alt="配置 Windows 环境变量：点击环境变量"></p><p><img src="/img/msys2-mingw-w64-setup/15-env-path.webp" alt="配置 Windows 环境变量：找到系统 Path 变量"></p><p>2.3、然后点击【新建】，粘贴刚才的路径，回车：</p><p><img src="/img/msys2-mingw-w64-setup/16-env-new.webp" alt="配置 Windows 环境变量：点击新建"></p><p><img src="/img/msys2-mingw-w64-setup/17-env-paste.webp" alt="配置 Windows 环境变量：粘贴路径"></p><p>2.4、依次点击 3 次【确定】：</p><p><img src="/img/msys2-mingw-w64-setup/18-env-ok-1.webp" alt="配置 Windows 环境变量：点击确定 1"></p><p><img src="/img/msys2-mingw-w64-setup/19-env-ok-2.webp" alt="配置 Windows 环境变量：点击确定 2"></p><p><img src="/img/msys2-mingw-w64-setup/20-env-ok-3.webp" alt="配置 Windows 环境变量：点击确定 3"></p><p>最后打开一个新的终端窗口输入 <code>gcc --version</code> 验证一下：</p><p><img src="/img/msys2-mingw-w64-setup/21-verify-gcc.webp" alt="配置 Windows 环境变量：验证"></p><h2 id="后续更新">后续更新</h2><p>后续如果要更新 MSYS2 和 MinGW-w64，只需要在 MSYS2 中输入以下命令：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">pacman <span class="token parameter variable">-Syu</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>等待命令执行完成即可。</p>]]>
      </content:encoded>
    </item>
    <item>
      <title>Markdown 实用指南</title>
      <link>https://www.mtueih.com/posts/markdown-guide/</link>
      <description>全面介绍 Markdown 基本与进阶语法，包含文本格式化、链接、图像、列表、代码块、表格、脚注、LaTeX 数学公式、Mermaid 图表等。</description>
      <author>狼魔宇</author>
      <category domain="https://www.mtueih.com/categories/development-tools/">开发工具</category>
      <category domain="https://www.mtueih.com/categories/development-tools/document-tools/">文档工具</category>
      <category domain="https://www.mtueih.com/tags/markdown/">Markdown</category>
      <category domain="https://www.mtueih.com/tags/document-writing/">文档编写</category>
      <category domain="https://www.mtueih.com/tags/latex/">LaTeX</category>
      <category domain="https://www.mtueih.com/tags/mermaid/">Mermaid</category>
      <category domain="https://www.mtueih.com/tags/syntax-tutorial/">语法教程</category>
      <pubDate>Tue, 28 Oct 2025 12:00:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="文本格式化">文本格式化</h2><h3 id="加粗">加粗</h3><ul><li>语法： <code>**粗体**</code>/<code>__粗体__</code>。</li><li>效果：<strong>粗体</strong>。</li></ul><div class="note success flat"><p>最佳实践：尽可能使用<code>**粗体**</code>。</p></div><h3 id="斜体">斜体</h3><ul><li>语法： <code>*斜体*</code>/<code>_斜体_</code>。</li><li>效果：<em>斜体</em>。</li></ul><div class="note success flat"><p>最佳实践：尽可能使用<code>*斜体*</code>。</p></div><h3 id="删除线">删除线</h3><ul><li>语法： <code>~~删除线~~</code>。</li><li>效果：<s>删除线</s>。</li></ul><h3 id="下划线（HTML）">下划线（HTML）</h3><p>Markdown 本身不支持下划线，但是可以通过 HTML 标签实现。</p><ul><li>语法： <code>&lt;u&gt;下划线（HTML）&lt;/u&gt;</code>。</li><li>效果：<u>下划线（HTML）</u>。</li></ul><h3 id="高亮">高亮</h3><ul><li>语法： <code>==高亮==</code>。</li><li>效果：<mark>高亮</mark>。</li></ul><div class="note info flat"><p>不是所有 Markdown 解析器都支持此语法，届时可以使用对应 HTML 语法（<code>&lt;mark&gt;高亮&lt;/mark&gt;</code>）来实现。</p></div><h3 id="上下标">上下标</h3><ul><li>上标<ul><li>语法：<code>x^2^</code>。</li><li>效果：x<sup>2</sup>。</li></ul></li><li>下标<ul><li>语法：<code>H~2~O</code>。</li><li>效果：H<sub>2</sub>O。</li></ul></li></ul><div class="note info flat"><p>不是所有 Markdown 解析器都支持此语法，届时可以使用对应 HTML 语法（<code>&lt;sup&gt;上标&lt;/sup&gt;</code>/<code>&lt;sub&gt;下标&lt;/sub&gt;</code>）来实现。</p></div><h3 id="其他">其他</h3><p>由于 Markdown 兼容 HTML，因此必要时可以使用 HTML 来实现更复杂的效果。</p><h2 id="链接">链接</h2><ul><li>语法： <code>全球最大的开发者社区：[GitHub](https://github.com)</code>。</li><li>效果：全球最大的开发者社区：<a href="https://github.com">GitHub</a>。</li></ul><h3 id="相对链接">相对链接</h3><p>链接的 URI 可以使用相对路径，来引用基于当前文件的相对位置的资源，比如 Git 仓库的 README 文件中通常这样引用许可证文件：<code>[Mozilla Public License 2.0](LICENSE)</code>。</p><h3 id="链接的-Title">链接的 Title</h3><p>鼠标悬停在链接上时的提示文本。</p><ul><li>语法： <code>[GNU](https://www.gnu.org &quot;伟大，无需多言。&quot;)</code>。</li><li>效果：<a href="https://www.gnu.org" title="伟大，无需多言。">GNU</a>。</li></ul><h3 id="字面-URL">字面 URL</h3><p>字面 URL，不同于超链接，将文本指向一个 URL，而是将 URL 原样写出来。</p><ul><li>语法： <code>&lt;https://www.markdownguide.org/&gt;</code>。</li><li>效果：<a href="https://www.markdownguide.org/">https://www.markdownguide.org/</a>。</li></ul><h3 id="邮箱链接">邮箱链接</h3><ul><li>语法： <code>&lt;gnu@gnu.org&gt;</code>。</li><li>效果：<a href="mailto:gnu@gnu.org">gnu@gnu.org</a>。</li></ul><h2 id="图像">图像</h2><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token url"><span class="token operator">!</span>[<span class="token content">GNU Logo</span>](<span class="token url">https://www.gnu.org/graphics/gerwinski-gnu-head.png</span>)</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>效果：</li></ul><p><img src="https://www.gnu.org/graphics/gerwinski-gnu-head.png" alt="GNU Logo"></p><h3 id="图像-Title">图像 Title</h3><p>同链接。</p><h3 id="图像链接">图像链接</h3><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token url">[<span class="token content">![GNU Logo</span>](<span class="token url">https://www.gnu.org/graphics/gerwinski-gnu-head.png</span>)</span>](https://www.gnu.org/)<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>效果：</li></ul><p><a href="https://www.gnu.org/"><img src="https://www.gnu.org/graphics/gerwinski-gnu-head.png" alt="GNU Logo"></a></p><h3 id="控制图片尺寸（HTML）">控制图片尺寸（HTML）</h3><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://www.linux.org/images/logo.png<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Linux Logo<span class="token punctuation">"</span></span> <span class="token attr-name">width</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>300<span class="token punctuation">"</span></span> <span class="token attr-name">height</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>45<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>效果：</li></ul><img src="https://www.linux.org/images/logo.png" alt="Linux Logo" width="300" height="45" /><h2 id="引用块">引用块</h2><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token blockquote punctuation">></span> GNU's Not Unix!<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>效果：</li></ul><blockquote><p>GNU’s Not Unix!</p></blockquote><h3 id="折叠块-详情块（HTML）">折叠块/详情块（HTML）</h3><p>此语法并不是 Markdown 的常客，但有些项目的 <em><a href="http://README.md">README.md</a></em> 中会使用此语法。</p><ul><li>语法：</li></ul><pre class="line-numbers language-markup" data-language="markup"><code class="language-markup"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>details</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>summary</span><span class="token punctuation">></span></span>点击展开查看详情<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>summary</span><span class="token punctuation">></span></span>这里是折叠的内容，可以包含 Markdown 语法。- 列表项 1- 列表项 2<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>details</span><span class="token punctuation">></span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><details><summary>点击展开查看详情</summary><p>这里是折叠的内容，可以包含 Markdown 语法。</p><ul><li>列表项 1</li><li>列表项 2</li></ul></details><h2 id="列表">列表</h2><h3 id="有序列表">有序列表</h3><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown">编写程序的 7 个步骤：<span class="token list punctuation">1.</span> 定义程序的目标；<span class="token list punctuation">2.</span> 设计程序；<span class="token list punctuation">3.</span> 编写代码；<span class="token list punctuation">4.</span> 编译；<span class="token list punctuation">5.</span> 运行程序；<span class="token list punctuation">6.</span> 测试和调试；<span class="token list punctuation">7.</span> 维护和修改。<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><p>编写程序的 7 个步骤：</p><ol><li>定义程序的目标；</li><li>设计程序；</li><li>编写代码；</li><li>编译；</li><li>运行程序；</li><li>测试和调试；</li><li>维护和修改。</li></ol><h3 id="无序列表">无序列表</h3><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown">主流 Web 框架：<span class="token list punctuation">-</span> React<span class="token list punctuation">-</span> Vue<span class="token list punctuation">-</span> Astro<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><p>主流 Web 框架：</p><ul><li>React</li><li>Vue</li><li>Astro</li></ul><h3 id="定义列表">定义列表</h3><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown">Markdown: 一种轻量级标记语言: 用于编写格式化文本HTML: 一种用于创建网页的标记语言<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><dl><dt>Markdown</dt><dd>一种轻量级标记语言</dd><dd>用于编写格式化文本</dd><dt>HTML</dt><dd>一种用于创建网页的标记语言</dd></dl><h2 id="分割线">分割线</h2><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token hr punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>效果：</li></ul><hr><h2 id="代码">代码</h2><h3 id="行内代码">行内代码</h3><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown">在 C 语言中打印“Hello world!”：<span class="token code-snippet code keyword">`printf("Hello world!\n");`</span>。<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>效果：</li></ul><p>在 C 语言中打印“Hello world!”：<code>printf(&quot;Hello world!\n&quot;);</code>。</p><div class="note info flat"><p>当需要在行内代码中包含反引号时，则外层需要使用<strong>双反引号</strong>包裹：</p><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown">JavaScript 模板字面量：<span class="token code-snippet code keyword">``let greeting = `Hello, $&#123;name&#125;`;``</span>。<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>效果：</li></ul><p>JavaScript 模板字面量：<code>let greeting = `Hello, ${name}`;</code>。</p></div><h3 id="代码块">代码块</h3><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token code"><span class="token punctuation">```</span><span class="token code-language">c</span><span class="token code-block language-c">#include &lt;stdio.h>int main(void) &#123;    printf("Hello world!\n");    return 0;&#125;</span><span class="token punctuation">```</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;stdio.h></span></span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">void</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span>    <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"Hello world!\n"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">&#125;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><div class="note info flat"><p>当需要在代码块中包含代码块语法时，则外层需要使用<strong>四个反引号</strong>包裹，比如刚才的示例就是这样实现的：</p><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token code"><span class="token punctuation">```</span><span class="token code-language">`markdown</span><span class="token code-block language-markdown">```c<span class="token title important"><span class="token punctuation">#</span>include &lt;stdio.h></span>int main(void) &#123;    printf("Hello world!\n");    return 0;&#125;</span><span class="token punctuation">```</span></span>````<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>更深层的嵌套（不建议），则需要更多反引号，以上示例就使用了五个反引号来实现。</p></div><h2 id="进阶语法-a-id-anchor-advanced-grammar-a">进阶语法<a id="anchor-advanced-grammar"></a></h2><h3 id="转义字符">转义字符</h3><p>Markdown 语法中涉及到的字符，如果想正常显示，则需要使用反斜杠（<code>\</code>）转义。</p><h3 id="表格">表格</h3><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token table"><span class="token table-header-row"><span class="token punctuation">|</span><span class="token table-header important"> 网站 </span><span class="token punctuation">|</span><span class="token table-header important"> 说明 </span><span class="token punctuation">|</span><span class="token table-header important"> 评分 </span><span class="token punctuation">|</span></span><span class="token table-line"><span class="token punctuation">|</span> <span class="token punctuation">---:</span> <span class="token punctuation">|</span> <span class="token punctuation">:---:</span> <span class="token punctuation">|</span> <span class="token punctuation">:---</span> <span class="token punctuation">|</span></span><span class="token table-data-rows"><span class="token punctuation">|</span><span class="token table-data"> <span class="token url">[<span class="token content">GitHub</span>](<span class="token url">https://github.com</span>)</span> </span><span class="token punctuation">|</span><span class="token table-data"> 全球最大的开发者社区。 </span><span class="token punctuation">|</span><span class="token table-data"> ⭐⭐⭐⭐⭐ </span><span class="token punctuation">|</span><span class="token punctuation">|</span><span class="token table-data"> <span class="token url">[<span class="token content">GNU</span>](<span class="token url">https://www.gnu.com</span>)</span> </span><span class="token punctuation">|</span><span class="token table-data"> GNU's Not Unix! </span><span class="token punctuation">|</span><span class="token table-data"> ⭐⭐⭐⭐ </span><span class="token punctuation">|</span></span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><p><code>---:</code>、<code>:---</code>、<code>:---:</code> 分别表示对应列右、左、居中对齐。</p><p><strong>对应的 HTML 语法</strong>：</p><ul><li>效果：</li></ul><table><thead><tr><th style="text-align:right">网站</th><th style="text-align:center">说明</th><th style="text-align:left">评分</th></tr></thead><tbody><tr><td style="text-align:right"><a href="https://github.com">GitHub</a></td><td style="text-align:center">全球最大的开发者社区。</td><td style="text-align:left">⭐⭐⭐⭐⭐</td></tr><tr><td style="text-align:right"><a href="https://www.gnu.com">GNU</a></td><td style="text-align:center">GNU’s Not Unix!</td><td style="text-align:left">⭐⭐⭐⭐</td></tr></tbody></table><h4 id="表格的跨行跨列（HTML）">表格的跨行跨列（HTML）</h4><p>Markdown 本身不支持表格跨行跨列，但是可以通过 HTML 语法来实现，可以参考 <a href="https://developer.mozilla.org/zh-CN/docs/Learn_web_development/Core/Structuring_content/HTML_table_basics#%E5%85%81%E8%AE%B8%E5%8D%95%E5%85%83%E6%A0%BC%E8%B7%A8%E8%B6%8A%E5%A4%9A%E8%A1%8C%E5%92%8C%E5%88%97">允许单元格跨越多行和列 - HTML 表格基础 - 学习 Web 开发 | MDN</a>，本文不再赘述。</p><h3 id="脚注">脚注</h3><p>在 Markdown 中，脚注的两个部分（<strong>脚注引用</strong>和<strong>脚注定义</strong>）即使写在一块（通常也建议写在一块），在渲染的时候，通常也会将<strong>脚注定义</strong>渲染在文档尾部（如果没有的话，就需要手动放在末尾），不然为什么叫<strong>脚</strong>注呢？</p><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown">GNU/Linux[^1] 是一个伟大的开源项目。<span class="token url-reference url"><span class="token punctuation">[</span><span class="token variable">^1</span><span class="token punctuation">]</span><span class="token punctuation">:</span> GNU/Linux</span> 指的是将 GNU 项目的软件组件与 Linux 内核结合而成的操作系统。<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><p>GNU/Linux<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> 是一个伟大的开源项目。</p><h3 id="待办列表">待办列表</h3><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token list punctuation">-</span> [ ] 完成用户登录模块<span class="token list punctuation">-</span> [x] 修复支付回调 Bug<span class="token list punctuation">-</span> [ ] 优化数据库查询性能<span class="token list punctuation">-</span> [ ] 编写接口文档<span class="token list punctuation">-</span> [ ] Code Review<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul class="contains-task-list"><li><p>效果：</p></li><li class="task-list-item"><p><input class="task-list-item-checkbox" disabled="" type="checkbox"> 完成用户登录模块</p></li><li class="task-list-item"><p><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 修复支付回调 Bug</p></li><li class="task-list-item"><p><input class="task-list-item-checkbox" disabled="" type="checkbox"> 优化数据库查询性能</p></li><li class="task-list-item"><p><input class="task-list-item-checkbox" disabled="" type="checkbox"> 编写接口文档</p></li><li class="task-list-item"><p><input class="task-list-item-checkbox" disabled="" type="checkbox"> Code Review</p></li></ul><h3 id="锚点">锚点</h3><p><strong>锚点</strong>，即在同一个页面中使用超链接语法跳转到不同的位置。只要在需要跳转的目标位置（通常是标题处，但其实任何位置都可以）放置一个空的 <code>a</code> 元素，并给这个 <code>a</code> 元素添加一个 <em><code>id</code></em> 属性，此后就可以使用 <code>#<em>id</em></code> 作为该位置的 url，使用超链接语法引用这个锚点了。</p><ul><li>语法：</li></ul><p>以下示例，将 <code>&lt;a id=&quot;anchor-advanced-grammar&quot;&gt;&lt;/a&gt;</code> 放在了文章之前的位置。</p><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token title important"><span class="token punctuation">##</span> 进阶语法&lt;a id="anchor-advanced-grammar">&lt;/a></span>……<span class="token url">[<span class="token content">进阶语法</span>](<span class="token url">#anchor-advanced-grammar</span>)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><p><a href="#anchor-advanced-grammar">进阶语法</a></p><div class="note warning flat"><p>由于是 <code>id</code> 属性，因此需要确保唯一性。而很多 Markdown 解析器默认会给每个标题添加一个 <code>id</code> 属性（大多数解析器会将标题转换为小写、空格变连字符，例如：<code>## Hello World</code> → <code>#hello-world</code>），需要注意不要与现有标题的 <code>id</code> 冲突。</p></div><h3 id="内容目录">内容目录</h3><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown">[TOC]<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>效果：</li></ul><nav class="table-of-contents"><ol><li><a href="#%E6%96%87%E6%9C%AC%E6%A0%BC%E5%BC%8F%E5%8C%96">文本格式化</a><ol><li><a href="#%E5%8A%A0%E7%B2%97">加粗</a></li><li><a href="#%E6%96%9C%E4%BD%93">斜体</a></li><li><a href="#%E5%88%A0%E9%99%A4%E7%BA%BF">删除线</a></li><li><a href="#%E4%B8%8B%E5%88%92%E7%BA%BF%EF%BC%88html%EF%BC%89">下划线（HTML）</a></li><li><a href="#%E9%AB%98%E4%BA%AE">高亮</a></li><li><a href="#%E4%B8%8A%E4%B8%8B%E6%A0%87">上下标</a></li><li><a href="#%E5%85%B6%E4%BB%96">其他</a></li></ol></li><li><a href="#%E9%93%BE%E6%8E%A5">链接</a><ol><li><a href="#%E7%9B%B8%E5%AF%B9%E9%93%BE%E6%8E%A5">相对链接</a></li><li><a href="#%E9%93%BE%E6%8E%A5%E7%9A%84-title">链接的 Title</a></li><li><a href="#%E5%AD%97%E9%9D%A2-url">字面 URL</a></li><li><a href="#%E9%82%AE%E7%AE%B1%E9%93%BE%E6%8E%A5">邮箱链接</a></li></ol></li><li><a href="#%E5%9B%BE%E5%83%8F">图像</a><ol><li><a href="#%E5%9B%BE%E5%83%8F-title">图像 Title</a></li><li><a href="#%E5%9B%BE%E5%83%8F%E9%93%BE%E6%8E%A5">图像链接</a></li><li><a href="#%E6%8E%A7%E5%88%B6%E5%9B%BE%E7%89%87%E5%B0%BA%E5%AF%B8%EF%BC%88html%EF%BC%89">控制图片尺寸（HTML）</a></li></ol></li><li><a href="#%E5%BC%95%E7%94%A8%E5%9D%97">引用块</a><ol><li><a href="#%E6%8A%98%E5%8F%A0%E5%9D%97%2F%E8%AF%A6%E6%83%85%E5%9D%97%EF%BC%88html%EF%BC%89">折叠块/详情块（HTML）</a></li></ol></li><li><a href="#%E5%88%97%E8%A1%A8">列表</a><ol><li><a href="#%E6%9C%89%E5%BA%8F%E5%88%97%E8%A1%A8">有序列表</a></li><li><a href="#%E6%97%A0%E5%BA%8F%E5%88%97%E8%A1%A8">无序列表</a></li><li><a href="#%E5%AE%9A%E4%B9%89%E5%88%97%E8%A1%A8">定义列表</a></li></ol></li><li><a href="#%E5%88%86%E5%89%B2%E7%BA%BF">分割线</a></li><li><a href="#%E4%BB%A3%E7%A0%81">代码</a><ol><li><a href="#%E8%A1%8C%E5%86%85%E4%BB%A3%E7%A0%81">行内代码</a></li><li><a href="#%E4%BB%A3%E7%A0%81%E5%9D%97">代码块</a></li></ol></li><li><a href="#%E8%BF%9B%E9%98%B6%E8%AF%AD%E6%B3%95">进阶语法</a><ol><li><a href="#%E8%BD%AC%E4%B9%89%E5%AD%97%E7%AC%A6">转义字符</a></li><li><a href="#%E8%A1%A8%E6%A0%BC">表格</a><ol><li><a href="#%E8%A1%A8%E6%A0%BC%E7%9A%84%E8%B7%A8%E8%A1%8C%E8%B7%A8%E5%88%97%EF%BC%88html%EF%BC%89">表格的跨行跨列（HTML）</a></li></ol></li><li><a href="#%E8%84%9A%E6%B3%A8">脚注</a></li><li><a href="#%E5%BE%85%E5%8A%9E%E5%88%97%E8%A1%A8">待办列表</a></li><li><a href="#%E9%94%9A%E7%82%B9">锚点</a></li><li><a href="#%E5%86%85%E5%AE%B9%E7%9B%AE%E5%BD%95">内容目录</a></li></ol></li><li><a href="#%E9%AB%98%E7%BA%A7%E8%AF%AD%E6%B3%95">高级语法</a><ol><li><a href="#latex-%E6%95%B0%E5%AD%A6%E5%85%AC%E5%BC%8F">LaTeX 数学公式</a><ol><li><a href="#%E8%A1%8C%E5%86%85%E5%85%AC%E5%BC%8F">行内公式</a></li><li><a href="#%E5%9D%97%E7%BA%A7%E5%85%AC%E5%BC%8F">块级公式</a></li><li><a href="#%E5%B8%B8%E7%94%A8-latex-%E8%AF%AD%E6%B3%95">常用 LaTeX 语法</a></li></ol></li><li><a href="#emoji">Emoji</a></li><li><a href="#%E5%9B%BE%E8%A1%A8">图表</a><ol><li><a href="#%E6%B5%81%E7%A8%8B%E5%9B%BE">流程图</a></li><li><a href="#%E5%BA%8F%E5%88%97%E5%9B%BE">序列图</a></li><li><a href="#%E7%B1%BB%E5%9B%BE">类图</a></li><li><a href="#%E7%8A%B6%E6%80%81%E5%9B%BE">状态图</a></li><li><a href="#%E5%AE%9E%E4%BD%93%E5%85%B3%E7%B3%BB%E5%9B%BE">实体关系图</a></li></ol></li><li><a href="#%E5%BE%BD%E7%AB%A0">徽章</a></li></ol></li></ol></nav><h2 id="高级语法">高级语法</h2><h3 id="LaTeX-数学公式">LaTeX 数学公式</h3><h4 id="行内公式">行内公式</h4><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown">“上帝公式”：$e^&#123;i\pi&#125;+1=0$<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>效果：</li></ul><p>“上帝公式”：<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>e</mi><mrow><mi>i</mi><mi>π</mi></mrow></msup><mo>+</mo><mn>1</mn><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">e^{i\pi}+1=0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.908em;vertical-align:-0.0833em;"></span><span class="mord"><span class="mord mathnormal">e</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8247em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.0359em;">iπ</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">0</span></span></span></span></p><h4 id="块级公式">块级公式</h4><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown">$$E=mc^2$$<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>E</mi><mo>=</mo><mi>m</mi><msup><mi>c</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">E=mc^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6833em;"></span><span class="mord mathnormal" style="margin-right:0.0576em;">E</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.8641em;"></span><span class="mord mathnormal">m</span><span class="mord"><span class="mord mathnormal">c</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span></span></p><h4 id="常用-LaTeX-语法">常用 LaTeX 语法</h4><table><thead><tr><th>语法名称</th><th>说明</th><th>语法</th><th>效果</th></tr></thead><tbody><tr><td>上标（指数）与下标</td><td><code>^</code> 表示上标（通常是指数），<code>_</code> 表示下标。</td><td><code>$x_i^2$</code></td><td><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>x</mi><mi>i</mi><mn>2</mn></msubsup></mrow><annotation encoding="application/x-tex">x_i^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0728em;vertical-align:-0.2587em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-2.4413em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2587em;"><span></span></span></span></span></span></span></span></span></span></td></tr><tr><td>分式（<em>fraction</em>）</td><td><code>\frac&#123;<em>分子</em>&#125;&#123;<em>分母</em>&#125;</code>。</td><td><code>$\frac&#123;1&#125;&#123;2&#125;$</code></td><td><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow><annotation encoding="application/x-tex">\frac{1}{2}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.1901em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8451em;"><span style="top:-2.655em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></td></tr><tr><td>根号（<em>square root</em>）</td><td><code>\sqrt[<em>根指数</em>]&#123;<em>被开方表达式</em>&#125;</code>。</td><td><code>$\sqrt[2]&#123;x^2+y^2&#125;$</code></td><td><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mroot><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup></mrow><mn>2</mn></mroot></mrow><annotation encoding="application/x-tex">\sqrt[2]{x^2+y^2}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.24em;vertical-align:-0.2822em;"></span><span class="mord sqrt"><span class="root"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7276em;"><span style="top:-2.9054em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size6 size1 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.9578em;"><span class="svg-align" style="top:-3.2em;"><span class="pstrut" style="height:3.2em;"></span><span class="mord" style="padding-left:1em;"><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7401em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0359em;">y</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7401em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span><span style="top:-2.9178em;"><span class="pstrut" style="height:3.2em;"></span><span class="hide-tail" style="min-width:1.02em;height:1.28em;"><svg xmlns="http://www.w3.org/2000/svg" width="400em" height="1.28em" viewBox="0 0 400000 1296" preserveAspectRatio="xMinYMin slice"><path d="M263,681c0.7,0,18,39.7,52,119c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120c340,-704.7,510.7,-1060.3,512,-1067l0 -0c4.7,-7.3,11,-11,19,-11H40000v40H1012.3s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60zM1001 80h400000v40h-400000z"/></svg></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2822em;"><span></span></span></span></span></span></span></span></span></td></tr><tr><td>求和（<em>sum</em>）</td><td><code>\sum_&#123;<em>求和下限</em>&#125;^&#123;<em>求和上限</em>&#125; &#123;<em>通项公式</em>&#125;</code>。</td><td><code>$\sum_&#123;i=1&#125;^n i^2$</code></td><td><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></msubsup><msup><mi>i</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">\sum_{i=1}^n i^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.1138em;vertical-align:-0.2997em;"></span><span class="mop"><span class="mop op-symbol small-op" style="position:relative;top:0em;">∑</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8043em;"><span style="top:-2.4003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">i</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.2029em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">n</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2997em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">i</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span></td></tr><tr><td>积分（<em>integral</em>）</td><td><code>\int_&#123;<em>积分下限</em>&#125;^&#123;<em>积分上限</em>&#125; &#123;<em>被积表达式</em>&#125;</code>；<br /><code>\infty</code> 表示无穷符号。</td><td><code>$\int_0^\infty e^&#123;-x&#125;dx$</code></td><td><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mo>∫</mo><mn>0</mn><mi mathvariant="normal">∞</mi></msubsup><msup><mi>e</mi><mrow><mo>−</mo><mi>x</mi></mrow></msup><mi>d</mi><mi>x</mi></mrow><annotation encoding="application/x-tex">\int_0^\infty e^{-x}dx</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.2151em;vertical-align:-0.3558em;"></span><span class="mop"><span class="mop op-symbol small-op" style="margin-right:0.1945em;position:relative;top:-0.0006em;">∫</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8593em;"><span style="top:-2.3442em;margin-left:-0.1945em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span><span style="top:-3.2579em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">∞</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.3558em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">e</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7713em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mathnormal mtight">x</span></span></span></span></span></span></span></span></span><span class="mord mathnormal">d</span><span class="mord mathnormal">x</span></span></span></span></td></tr><tr><td>矩阵（<em>matrix</em>）</td><td><code>\begin&#123;matrix&#125; &#123;<em>矩阵元素</em>&#125; \end&#123;matrix&#125;</code>；<br />矩阵元素之间用<code>&amp;</code>连接，用<code>\\</code>换行。</td><td><code>$\begin&#123;matrix&#125; a &amp; b &amp; c \\ d &amp; e &amp; f \\ f &amp; g &amp; h \end&#123;matrix&#125;$</code></td><td><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable rowspacing="0.16em" columnalign="center center center" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>a</mi></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>b</mi></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>c</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>d</mi></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>e</mi></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>f</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>f</mi></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>g</mi></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>h</mi></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{matrix} a &amp; b &amp; c \\ d &amp; e &amp; f \\ f &amp; g &amp; h \end{matrix}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:3.6em;vertical-align:-1.55em;"></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.05em;"><span style="top:-4.21em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">a</span></span></span><span style="top:-3.01em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">d</span></span></span><span style="top:-1.81em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.1076em;">f</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.55em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.05em;"><span style="top:-4.21em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">b</span></span></span><span style="top:-3.01em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">e</span></span></span><span style="top:-1.81em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0359em;">g</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.55em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.05em;"><span style="top:-4.21em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">c</span></span></span><span style="top:-3.01em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.1076em;">f</span></span></span><span style="top:-1.81em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">h</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.55em;"><span></span></span></span></span></span></span></span></span></span></span></td></tr></tbody></table><blockquote><p>更多 LaTeX 语法参考 <a href="https://www.latex-project.org/help/documentation">LaTeX Documentation</a>。</p></blockquote><h3 id="Emoji">Emoji</h3><p>Emoji，即表情符号，在 Markdown 中，可以直接使用 Emoji 符号，也可以使用 Emoji Shortcode（冒号语法）来表示 Emoji。</p><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown">😎 :sunglasses:<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>效果：</li></ul><p>😎 😎</p><blockquote><p>完整的 Emoji Shortcode 列表参考 <a href="https://emojipedia.org/shortcodes">Emoji Shortcodes - Emojipedia</a>。</p></blockquote><h3 id="图表">图表</h3><p>在 Markdown 中，使用 Mermaid 语法来绘制图表，Mermaid 支持多种图表类型，这里介绍 5 种常用的图表类型：流程图、序列图、类图、状态图以及实体关系图。</p><p>在 Markdown 中绘制 Mermaid 图表的语法大体是相同的，就是使用代码块语法，指定语言为 <code>mermaid</code>，然后在代码块中编写 Mermaid 语法。</p><h4 id="流程图">流程图</h4><p>要绘制 <a href="https://mermaid.js.org/syntax/flowchart.html">Mermaid 流程图</a>（<em>Flowchart</em>），需要在开头使用 <code>flowchart</code>（推荐） 或 <code>graph</code> 关键字，并在其后指定流程图的<a href="https://mermaid.js.org/syntax/flowchart.html#direction"><strong>方向</strong></a>，四种方向的指定方法：</p><ul><li><code>TB</code> / <code>TD</code>：从上到下；</li><li><code>BT</code>：从下到上；</li><li><code>LR</code>：从左到右；</li><li><code>RL</code>：从右到左。</li></ul><p>这里演示最常用的 <code>TD</code> 方向。</p><p>然后定义<strong>节点</strong>和<strong>连接它们的线</strong>：</p><ul><li>定义节点：使用标识符（通常是单个的大写字母）定义节点，在其后使用括号包裹其内容，可以使用不同的括号包裹节点的内容来定义<a href="https://mermaid.js.org/syntax/flowchart.html#node-shapes">节点的形状</a>，常用节点形状有：<ul><li><code>[]</code>：矩形节点；</li><li><code>()</code>：圆角矩形节点；</li><li><code>&#123;&#125;</code>：菱形节点。</li></ul></li><li>定义<a href="https://mermaid.js.org/syntax/flowchart.html#links-between-nodes">连接线</a>，常用连接线样式有：<ul><li><code>---</code>、<code>--&gt;</code>：实线、实线箭头；</li><li><code>-.-</code>、<code>-.-&gt;</code> ：虚线、虚线箭头；</li><li><code>===</code>、<code>==&gt;</code>：加粗线、加粗箭头。</li></ul></li><li>定义连接线上的描述文字（可选）：在连接线后面，使用 <code>|</code> 包裹描述文字，如 <code>A --&gt; |描述文字| B </code>。</li></ul><p>另外可以使用 <code>subgraph</code> 创建子流程。</p><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token code"><span class="token punctuation">```</span><span class="token code-language">mermaid</span><span class="token code-block language-mermaid">flowchart TD    A[开始] --> B&#123;是否登录?&#125;    B -- 是 --> C[进入首页]    B -- 否 --> D[跳转登录页]</span><span class="token punctuation">```</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><pre><code class="mermaid">flowchart TD    A[开始] --&gt; B&#123;是否登录?&#125;    B -- 是 --&gt; C[进入首页]    B -- 否 --&gt; D[跳转登录页]</code></pre><h4 id="序列图">序列图</h4><p>要绘制 <a href="https://mermaid.js.org/syntax/sequenceDiagram.html">Mermaid 序列图</a>（<em>Sequence Diagram</em>），需要在开头使用 <code>sequenceDiagram</code> 关键字。</p><p>然后定义<strong>参与者</strong>和<strong>它们之间的消息交互</strong>：</p><ul><li>定义参与者：使用 <code>participant</code> 关键字定义参与者（可以是人、系统或组件），也可以使用别名来简化引用；</li><li>定义<a href="https://mermaid.js.org/syntax/sequenceDiagram.html#arrows">消息类型</a>，常用消息样式有：<ul><li><code>-&gt;&gt;</code>：实线箭头（同步消息）；</li><li><code>--&gt;&gt;</code>：虚线箭头（异步消息/返回消息）；</li><li><code>-&gt;</code>：实线无箭头（用于注释等）；</li><li><code>--x</code>：带叉的虚线（表示销毁或终止）。</li></ul></li><li>定义消息上的描述文字：在箭头后面使用冒号加描述文字，如 <code>A -&gt;&gt; B: 发送请求</code>。</li></ul><p>另外可以使用 <code>alt</code>、<code>opt</code>、<code>loop</code> 等关键字创建条件分支、可选流程和循环。</p><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token code"><span class="token punctuation">```</span><span class="token code-language">mermaid</span><span class="token code-block language-mermaid">sequenceDiagram    participant 用户    participant 服务器    用户->>服务器: 发送请求    服务器-->>用户: 返回响应</span><span class="token punctuation">```</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><pre><code class="mermaid">sequenceDiagram    participant 用户    participant 服务器    用户-&gt;&gt;服务器: 发送请求    服务器--&gt;&gt;用户: 返回响应</code></pre><h4 id="类图">类图</h4><p>要绘制 <a href="https://mermaid.js.org/syntax/classDiagram.html">Mermaid 类图</a>（<em>Class Diagram</em>），需要在开头使用 <code>classDiagram</code> 关键字。</p><p>然后定义<strong>类</strong>和<strong>它们之间的关系</strong>：</p><ul><li>定义类：使用 <code>class</code> 关键字定义类，在大括号中声明类的属性和方法；<ul><li>属性/方法的可见性前缀：<ul><li><code>+</code>：公共（public）；</li><li><code>-</code>：私有（private）；</li><li><code>#</code>：受保护（protected）。</li></ul></li></ul></li><li>定义<a href="https://mermaid.js.org/syntax/classDiagram.html#relationship-between-classes">关系类型</a>，常用关系有：<ul><li><code>&lt;|--</code>：继承关系；</li><li><code>*--</code>：组合关系；</li><li><code>o--</code>：聚合关系；</li><li><code>--&gt;</code>：关联关系；</li><li><code>..&gt;</code>：依赖关系。</li></ul></li><li>定义关系上的描述文字（可选）：在连接线后面使用冒号加描述文字，如 <code>A --&gt; B : 关联</code>。</li></ul><p>另外可以使用 <code>note</code> 关键字为类添加注释。</p><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token code"><span class="token punctuation">```</span><span class="token code-language">mermaid</span><span class="token code-block language-mermaid">classDiagram    class Student &#123;        +String name        +study()    &#125;    class Course &#123;        +String title    &#125;    Student --> Course : enrolls</span><span class="token punctuation">```</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><pre><code class="mermaid">classDiagram    class Student &#123;        +String name        +study()    &#125;    class Course &#123;        +String title    &#125;    Student --&gt; Course : enrolls</code></pre><h4 id="状态图">状态图</h4><p>要绘制 <a href="https://mermaid.js.org/syntax/stateDiagram.html">Mermaid 状态图</a>（<em>State Diagram</em>），需要在开头使用 <code>stateDiagram-v2</code>（推荐）或 <code>stateDiagram</code> 关键字。</p><p>然后定义<strong>状态</strong>和<strong>状态之间的转换</strong>：</p><ul><li>定义状态：直接使用状态名称作为节点，也可以使用 <code>state &quot;显示名称&quot; as 状态标识符</code> 的语法来定义带空格或特殊字符的状态名称；</li><li>定义起始和结束状态：使用 <code>[*]</code> 表示起始状态或结束状态；</li><li>定义<a href="https://mermaid.js.org/syntax/stateDiagram.html#transitions">状态转换</a>，常用转换样式有：<ul><li><code>--&gt;</code>：普通转换箭头；</li><li><code>--&gt;&gt;</code>：虚线转换箭头。</li></ul></li><li>定义转换上的描述文字（可选）：在转换箭头后面使用冒号加描述文字，如 <code>状态A --&gt; 状态B : 触发事件</code>。</li></ul><p>另外可以使用 <code>note right of</code> 或 <code>note left of</code> 为状态添加注释，使用 <code>state</code> 块定义复合状态。</p><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token code"><span class="token punctuation">```</span><span class="token code-language">mermaid</span><span class="token code-block language-mermaid">stateDiagram-v2    [*] --> 待机    待机 --> 运行中 : 点击开始    运行中 --> 待机 : 点击停止</span><span class="token punctuation">```</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><pre><code class="mermaid">stateDiagram-v2    [*] --&gt; 待机    待机 --&gt; 运行中 : 点击开始    运行中 --&gt; 待机 : 点击停止</code></pre><h4 id="实体关系图">实体关系图</h4><p>要绘制 <a href="https://mermaid.js.org/syntax/entityRelationshipDiagram.html">Mermaid 实体关系图</a>（<em>Entity Relationship Diagram</em>），需要在开头使用 <code>erDiagram</code> 关键字。</p><p>然后定义<strong>实体</strong>和<strong>它们之间的关系</strong>：</p><ul><li>定义实体：直接使用实体名称作为节点，在大括号中声明实体的属性，每个属性占一行，格式为 <code>类型 属性名</code>；</li><li>定义<a href="https://mermaid.js.org/syntax/entityRelationshipDiagram.html#relationships">关系类型</a>，常用关系符号有：<ul><li><code>||--||</code>：一对一强制关系；</li><li><code>||--o|</code>：一对零或一关系；</li><li><code>||--o&#123;</code>：一对多关系；</li><li><code>&#125;|--o&#123;</code>：零或一到多关系；</li><li><code>||--|&#123;</code>：一对至少一关系。</li></ul></li><li>定义关系上的描述文字（可选）：在连接线后面使用冒号加描述文字，如 <code>USER ||--o&#123; ORDER : places</code>。</li></ul><p>另外可以使用 <code>%%</code> 添加注释。</p><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token code"><span class="token punctuation">```</span><span class="token code-language">mermaid</span><span class="token code-block language-mermaid">erDiagram    USER &#123;        int id        string name        string email    &#125;    ORDER &#123;        int id        date created_at    &#125;    USER ||--o&#123; ORDER : places</span><span class="token punctuation">```</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>效果：</li></ul><pre><code class="mermaid">erDiagram    USER &#123;        int id        string name        string email    &#125;    ORDER &#123;        int id        date created_at    &#125;    USER ||--o&#123; ORDER : places</code></pre><blockquote><p>更多 Mermaid 图表类型及语法请参考 <a href="https://mermaid.js.org/">Mermaid | Diagramming and charting tool</a>。</p></blockquote><h3 id="徽章">徽章</h3><p>徽章常用于展示项目状态（如构建状态、版本号等）。</p><p>徽章的本质其实就是图片而已，所以徽章的重点就在于生成徽章。</p><p>常用的徽章生成服务有：</p><ul><li><a href="https://shields.io/">Shields.io</a>（最常用）；</li><li><a href="https://badgen.net/">Badgen.net</a>。</li></ul><p>以 Shields.io 为例，通过 URL 路径参数来描述徽章信息，最基本的静态徽章的语法，以 <code>https://img.shields.io/badge/</code> 为 URL 前缀，后跟一个路径，路径由 3 部分组成，使用连字符（<code>-</code>）分隔。</p><p>3 个部分分别为：标签、消息和颜色。空格使用下划线符（<code>_</code>）代替。当想要在这 3 各部分之间包含下划线和连字符时，分别使用 <code>__</code> 和 <code>--</code> 来代替。</p><ul><li>语法：</li></ul><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token url"><span class="token operator">!</span>[<span class="token content">Build Status</span>](<span class="token url">https://img.shields.io/badge/build-passing-brightgreen</span>)</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>效果：</li></ul><p><img src="https://img.shields.io/badge/build-passing-brightgreen" alt="Build Status"></p><blockquote><p>更多徽章语法请参考对应徽章生成服务的官方文档。</p></blockquote><hr class="footnotes-sep"><section class="footnotes"><ol class="footnotes-list"><li id="fn1" class="footnote-item"><p>GNU/Linux 指的是将 GNU 项目的软件组件与 Linux 内核结合而成的操作系统。 <a href="#fnref1" class="footnote-backref">↩︎</a></p></li></ol></section>]]>
      </content:encoded>
    </item>
    <item>
      <title>Qt 开源最新版官网下载安装保姆级教程</title>
      <link>https://www.mtueih.com/posts/qt-installation-guide/</link>
      <description>本教程为个人开发者提供通用的，从官网下载安装最新开源版 Qt 的方法。</description>
      <author>狼魔宇</author>
      <category domain="https://www.mtueih.com/categories/programming/">编程</category>
      <category domain="https://www.mtueih.com/categories/programming/c-cpp/">C/C++</category>
      <category domain="https://www.mtueih.com/categories/programming/c-cpp/environment-setup/">环境搭建</category>
      <category domain="https://www.mtueih.com/tags/c/">C++</category>
      <category domain="https://www.mtueih.com/tags/qt/">Qt</category>
      <category domain="https://www.mtueih.com/tags/framework/">框架</category>
      <category domain="https://www.mtueih.com/tags/third-party-library/">第三方库</category>
      <category domain="https://www.mtueih.com/tags/gui/">GUI</category>
      <pubDate>Tue, 28 May 2024 07:47:16 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="什么是-Qt（了解请跳过）">什么是 Qt（了解请跳过）</h2><h3 id="Qt-基本介绍">Qt 基本介绍</h3><p><em>Qt 是一个跨平台 C++ 图形用户界面应用程序框架。</em></p><p>有关 Qt 的详细介绍，可以参考这篇文章：<a href="https://zhuanlan.zhihu.com/p/388639231">Qt 是什么？Qt 简介（非常全面） - 李清龙的文章 - 知乎</a>。</p><h3 id="Qt-开源版与商业版的区别">Qt 开源版与商业版的区别</h3><p>Qt 有商业版和开源版（也叫社区版）之分，两者代码基本上是相同的，不同之处在于<strong>许可方式</strong>和<strong>附加服务</strong>。</p><p>简单来说，在开源许可下，Qt 是不能商用的，你用 Qt 写的代码基本上也要开源。而商业许可就没有这个限制。</p><h3 id="Qt-和-Qt-Creator-的区别">Qt 和 Qt Creator 的区别</h3><ul><li><strong>Qt</strong>。Qt 是一套跨平台 C++ 应用程序开发框架；</li><li><strong>Qt Creator</strong>。Qt Creator 是 Qt 官方的 IDE，专门为 Qt 开发打造，内置很多辅助 Qt 开发的实用工具（比如 Qt Designer）。</li></ul><h2 id="【第一步】-注册一个-Qt-账号（有就跳过）">【第一步】 注册一个 Qt 账号（有就跳过）</h2><p>安装过程中需要登录 Qt 账户，如果想用最新版<strong>必须</strong>注册。你可以自行进入 <a href="https://login.qt.io/register">Qt 账户注册页面</a> 来完成注册，也可以参考下面的步骤。</p><p>1、进入 <a href="https://login.qt.io/register">Qt 账户注册页面</a>：</p><p><img src="/img/qt-installation-guide/00-qt-account-registration-page.webp" alt="Qt 账户注册页面"></p><p>注册 Qt 账户只需要一个邮箱就可以了，但邮箱必须是有效邮箱，因为后续会向此邮箱发送包含确认链接的邮件。</p><p>2、填写注册信息，然后点击【Create Qt Account】：</p><p><img src="/img/qt-installation-guide/01-fill-in-registration-info.webp" alt="填写 Qt 账户注册信息"></p><p>由于以后此账户可能会多次用到，但又达不到常用的程度（因为此账户就只是在 Qt 安装的时候需要用到），所以建议使用密码管理器（推荐 <a href="https://bitwarden.com/">Bitwarden</a>）来保存此账户的密码。</p><p>3、然后不出意外的话，就注册成功了：</p><p><img src="/img/qt-installation-guide/02-registration-successful.webp" alt="Qt 账户注册成功提示页面"></p><p>但是注册成功之后，还需要<strong>激活</strong>，你的邮箱会收到一封包含<strong>确认链接</strong>的邮件，你需要点击该链接以激活此账户。</p><p>上面的页面可以关闭了。另外再次提醒要保管好密码。</p><p>4、进入你刚才用于注册的邮箱，找到刚才 Qt 发来的邮件，点击其中的确认链接：</p><p><img src="/img/qt-installation-guide/03-confirmation-email.webp" alt="Qt 账户激活确认邮件"></p><p>然后会进入一个表单页面，你需要填写一些信息才能完成激活：</p><p><img src="/img/qt-installation-guide/04-activation-form.webp" alt="Qt 账户激活信息填写页面"></p><p>5、填写信息，然后点击【Confirm】：</p><p>信息并不需要一定得是真实的，所以你可以根据自己的情况填写。</p><p><img src="/img/qt-installation-guide/05-fill-activation-info.webp" alt="填写 Qt 账户激活信息"></p><p>然后不出意外的话，就会跳转到<strong>登录页面</strong>，并且页面中会有一行绿色文本（“Success! Please login to continue.”）提示激活成功：</p><p><img src="/img/qt-installation-guide/06-activation-success.webp" alt="Qt 账户激活成功提示"></p><p>然而此时并不需要登录，我们只需要在安装过程中登录，而且注册完毕之后也并没有什么需要处理的事项，因此此页面可以关闭了。</p><p>到此 Qt 账户的注册就正式完成了。</p><h2 id="【第二步】下载安装包">【第二步】下载安装包</h2><p>经实测，Qt 的安装，目前并没有能够通过包管理器来一键安装的解决方案，只能手动下载安装包来安装。你可以自行进入 <a href="https://www.qt.io/development/download-qt-installer-oss">Download Qt OSS: Get Qt Online Installer</a> 页面下载安装包，也可以参考下面的步骤。</p><div class="note info flat"><p><strong>Qt OSS</strong>，即 <em>Qt for Open Source Use</em>，也就是 Qt 开源版。<br><strong>Qt Online Installer</strong>，Qt 在线安装包，Qt 从某个版本开始，就不再支持离线安装包了，因此如果要使用最新版，就只能通过在线安装包来安装。（不建议为了避免在线安装而使用旧版，在线安装并没有什么坏处，而使用最新的版本几乎总是有好处的。）</p></div><p>1、进入 <a href="https://www.qt.io/development/download-qt-installer-oss">Download Qt OSS: Get Qt Online Installer</a> 页面：</p><p><img src="/img/qt-installation-guide/07-installer-download-page.webp" alt="Qt 在线安装包下载页面"></p><p>2、选择你的平台类型：</p><p>这里我以 Windows 平台为例。</p><p><img src="/img/qt-installation-guide/08-select-platform.webp" alt="选择 Qt 安装包平台类型"></p><p>然后下方会出现【Qt Online Installer for Windows (x64)】（显示文本会根据你选择的平台而有所不同）的按钮。</p><p>3、点击【Qt Online Installer for Windows (x64)】按钮，即可开始下载。</p><p>安装包大小通常只有几十 MB，等待下载完成即可。</p><div class="note info flat"><p>注意不要被安装包文件名中的版本号骗了，它只是 Qt 安装包的版本，并不是 Qt 库的版本。</p></div><h2 id="【第三步】安装">【第三步】安装</h2><p>如今的 Qt 在线安装包与以往大不相同了，安装过程变得很简单，你可以自行运行上一步下载的安装包以完成安装过程，也可以参考下面的步骤（不同版本的安装包可能存在细节差异，但思路大体不差）。</p><div class="note info flat"><p>由于是<strong>在线</strong>安装包，因此整个安装过程都需要<strong>联网</strong>。</p></div><p>1、运行安装包：</p><p>首先映入眼帘的是欢迎界面，直接点击【下一步】以开始安装流程：</p><p><img src="/img/qt-installation-guide/09-welcome-screen.webp" alt="Qt 安装程序欢迎界面"></p><p>然后会做一些准备工作，随后就进入登录界面（我们之前的注册正是为此而准备的）。</p><p>2、填写登录信息，然后点击【下一步】以登录你的账户：</p><div class="note info flat"><p>这一步中，关于是否同意<strong>数据收集</strong>以帮助 Qt 改进，我建议（当然只是建议）同意。</p><p>因为 Qt 真的是一个很棒的开源项目，尽管它有商业许可模式，但它的源代码一直都是开源的。并且 Qt 的开源许可证要求延伸作品也必须是开源的，这为开源社区做出了极大的贡献。它并不算是一个有很高盈利的项目，但项目的质量一直很高。当然，不应该只有开源才应该得到尊重，所有认真做产品的团队都应该得到支持。所以我真心希望 Qt 这个项目能够得到更多人（尤其是开发者）的支持🌷。</p></div><p><img src="/img/qt-installation-guide/10-fill-login-info.webp" alt="填写 Qt 账户登录信息"></p><p>登录成功后，会进入开源义务界面，这一步主要是同意 Qt 本身的许可协议，以及选择是以个人还是企业的身份获得许可。</p><p>3、同意 Qt 许可协议，填写许可信息（如果是企业），然后点击【下一步】：</p><p><img src="/img/qt-installation-guide/11-fill-license-info.webp" alt="填写 Qt 许可协议信息"></p><p>之后会进入安装选项界面，这一步有两件事，指定 Qt 的安装目录，以及选择要安装的包。</p><p>4、指定安装目录，选择要安装的包，然后点击【下一步】：</p><ul><li>指定安装目录。默认安装目录为 <code>C:\Qt</code>，建议保持默认。如果需要修改，也请注意，路径中不要包含中文、空格等非 ASCLL 字符，这一点一直是软件开发领域的共识。这里由于我之前安装过，为了演示，改为 <code>C:\Qt6</code>；</li></ul><div class="note info flat"><p>为何建议保持默认？因为有很多第三方开发工具，会到 Qt 的默认的安装目录下寻找 Qt，当然此行为是不应该被依赖的，但大多数情况下，保持默认能帮你节省很多的麻烦。</p></div><ul><li>选择要安装的包。可以选择官方打包好的包，也可以自定义安装。官方打包好的包中，尽管不同的安装包版本略有差异，但大致上都会包含“用于<strong>桌面</strong>/<strong>移动</strong>平台开发的 Qt 库”这两个包，以及一个叫作“<strong>设计</strong>工具”的包。</li></ul><p>这三个包分别用于不同的开发场景，如果你要开发桌面应用，那么通常选“用于桌面开发的 Qt 库”这个包就足够了，如果你要开发移动应用，那么通常选“用于移动开发的 Qt 库”这个包也就足够了。</p><p>而“设计工具”这个包，我觉得应该是用于这样的场景，当一个项目中的代码逻辑部分与图形界面部分分别交给不同的开发者时，负责设计图形界面的开发者可能只会用到设计工具，而不需要接触任何代码（类似于 Web 开发中的前后端分离）。</p><p>如果你不是特别清楚（比如团队大型项目，项目初期就有十分明确的约束），通常不建议自定义安装，因为你安装过后随时都能添加/删除组件，你不太可能一开始就知道自己以后会/不会用到哪些组件，后续如果发现有需要的组件，可以随时添加。</p><p><img src="/img/qt-installation-guide/12-installation-options.webp" alt="Qt 安装选项配置界面"></p><p>之后会进入许可协议界面，这一步主要是同意 Qt 所依赖的第三方项目（如 CMake）的开源协议。</p><p>5、同意许可协议，然后点击【下一步】：</p><p><img src="/img/qt-installation-guide/13-agree-license.webp" alt="同意 Qt 第三方依赖许可协议"></p><p>之后会进入开始菜单文件夹选择界面。</p><p>6、指定开始菜单文件夹，然后点击【下一步】：</p><p>这一步通常都没有修改的必要，它和 Qt 的安装位置没有任何关系，只是相关的快捷方式被放在哪而已。这里由于我之前安装过，为了演示，改为 <code>C:\Qt6</code>。</p><p><img src="/img/qt-installation-guide/14-specify-startmenu.webp" alt="指定 Qt 开始菜单文件夹"></p><p>之后会进入安装总结界面，该界面会显示将会安装的组件，将会占用的空间信息，同时会提供一个选项，询问是否要将常见文件类型（通常是 C 和 C++ 的代码文件）关联到 Qt Creator，这个根据自己的情况进行选择即可。</p><p>7、点击【安装】以开始安装：</p><p><img src="/img/qt-installation-guide/15-installation-summary.webp" alt="Qt 安装总结界面"></p><p>随后就正式进入实际的安装过程了，通常要下载几个 GB 的文件，所以会花点儿时间。</p><p>如果一切顺利的话，不久之后就会进入安装成功界面：</p><p><img src="/img/qt-installation-guide/16-installation-success.webp" alt="Qt 安装成功完成界面"></p>]]>
      </content:encoded>
    </item>
    <item>
      <title>Windows 实用工具推荐</title>
      <link>https://www.mtueih.com/posts/windows-tools/</link>
      <description>
        <![CDATA[<h2 id="Microsoft-Activation-Scripts-MAS">Microsoft Activation Scripts (MAS)</h2>
<p>官网：<a href="https://massgrave.dev/">Microsoft Activation Scripts | MAS</a>。</p>
<p>Windows 系统、微软 Office 最成熟的一站式激活解决方案，开源、免费、激活效率与成功率高。</p>
<h3 id="临时下载并执行（推荐）">临时下载并执行（推荐）</h3>
<p>使用 PowerShell 执行：</p>
<pre]]>
      </description>
      <author>狼魔宇</author>
      <category domain="https://www.mtueih.com/categories/resources/">资源</category>
      <category domain="https://www.mtueih.com/categories/resources/software/">软件</category>
      <category domain="https://www.mtueih.com/categories/resources/software/windows/">Windows</category>
      <category domain="https://www.mtueih.com/tags/windows/">Windows</category>
      <pubDate>Mon, 27 May 2024 07:47:16 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="Microsoft-Activation-Scripts-MAS">Microsoft Activation Scripts (MAS)</h2><p>官网：<a href="https://massgrave.dev/">Microsoft Activation Scripts | MAS</a>。</p><p>Windows 系统、微软 Office 最成熟的一站式激活解决方案，开源、免费、激活效率与成功率高。</p><h3 id="临时下载并执行（推荐）">临时下载并执行（推荐）</h3><p>使用 PowerShell 执行：</p><pre class="line-numbers language-powershell" data-language="powershell"><code class="language-powershell"><span class="token function">irm</span> https:<span class="token operator">/</span><span class="token operator">/</span>get<span class="token punctuation">.</span>activated<span class="token punctuation">.</span>win <span class="token punctuation">|</span> <span class="token function">iex</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h2 id="入梦工具箱-硬件信息">入梦工具箱-硬件信息</h2><p>Windows 查看硬件信息。</p><blockquote><p><strong>下载链接</strong>：</p><ul><li>入梦博客：<a href="https://rmsys.top/index.php/archives/5/">入梦工具箱 (RM Toolbox) - 唯有入梦</a>。</li><li>蓝奏云（v9.1）：<a href="https://wwbim.lanzoub.com/iDtA83q4nfeb">入梦工具箱-硬件信息v9.1.exe - 蓝奏云</a>，密码：<code>695m</code>。</li></ul></blockquote><h2 id="IObit-Driver-Booster-Pro">IObit Driver Booster Pro</h2><p>最强的驱动程序更新工具，几乎可以解决一切 Windows 系统的驱动程序问题。</p><blockquote><p><strong>下载链接</strong>：</p><ul><li>官网（正版）：<a href="https://www.iobit.com/en/driver-booster-pro.php">IObit Driver Booster PRO - Driver Updater for Windows</a>。</li><li>易破解：<a href="https://www.ypojie.com/4633.html">IObit Driver Booster Pro - 易破解</a>。</li><li>蓝奏云（v13.0.0.143 Portable）：<a href="https://wwbim.lanzoub.com/iF7Wi3q4mrwf">DriverBooster_13.0.0.143_Portable.zip - 蓝奏云</a>。</li></ul></blockquote><h2 id="Advanced-SystemCare-Pro">Advanced SystemCare Pro</h2><p>功能全面的系统优化工具。</p><blockquote><p><strong>下载链接</strong>：</p><ul><li>官网（正版）：<a href="https://www.iobit.com/en/advancedsystemcarepro.php">Get Advanced SystemCare PRO 19 Pro Now! - IObit</a>。</li><li>易破解：<a href="https://www.ypojie.com/6771.html">Advanced SystemCare Pro - 易破解</a>。</li><li>蓝奏云（v17.3.0.204 Portable）：<a href="https://wwbim.lanzoub.com/iUlad3q4q4pe">AdvancedSystemCare_Pro_v17.3.0.204_Portable.zip - 蓝奏云</a>。</li></ul></blockquote>]]>
      </content:encoded>
    </item>
  </channel>
</rss>
