Files
reference/docs/cmake.html
2025-05-11 17:34:02 +00:00

156 lines
24 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" data-color-mode="dark">
<head>
<meta charset="utf-8">
<title>CMake 备忘清单
&#x26; cmake cheatsheet &#x26; Quick Reference</title>
<meta content="width=device-width, initial-scale=1" name="viewport">
<meta description="本清单提供了对 CMake 的入门简要概述,以及 CMake 常用示例
入门,为开发人员分享快速参考备忘单。">
<meta keywords="cmake,reference,Quick,Reference,cheatsheet,cheat,sheet">
<meta name="author" content="jaywcjlove">
<meta name="license" content="MIT">
<meta name="funding" content="https://jaywcjlove.github.io/#/sponsor">
<meta rel="apple-touch-icon" href="../icons/touch-icon-iphone.png">
<meta rel="apple-touch-icon" sizes="152x152" href="../icons/touch-icon-ipad.png">
<meta rel="apple-touch-icon" sizes="180x180" href="../icons/touch-icon-iphone.png">
<meta rel="apple-touch-icon" sizes="167x167" href="../icons/touch-icon-ipad-retina.png">
<meta rel="apple-touch-icon" sizes="120x120" href="../icons/touch-icon-iphone-retina.png">
<link rel="icon" href="../icons/favicon.svg" type="image/svg+xml">
<link href="../style/style.css" rel="stylesheet">
<link href="../style/katex.css" rel="stylesheet">
</head>
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em">
<path d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="#c9d1d9"></path>
<path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#228e6c"></path>
<path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#228e6c"></path>
</svg>
<span class="title">Quick Reference</span></a><div class="menu"><a href="javascript:void(0);" class="searchbtn" id="searchbtn"><svg xmlns="http://www.w3.org/2000/svg" height="1em" width="1em" viewBox="0 0 18 18">
<path fill="currentColor" d="M17.71,16.29 L14.31,12.9 C15.4069846,11.5024547 16.0022094,9.77665502 16,8 C16,3.581722 12.418278,0 8,0 C3.581722,0 0,3.581722 0,8 C0,12.418278 3.581722,16 8,16 C9.77665502,16.0022094 11.5024547,15.4069846 12.9,14.31 L16.29,17.71 C16.4777666,17.8993127 16.7333625,18.0057983 17,18.0057983 C17.2666375,18.0057983 17.5222334,17.8993127 17.71,17.71 C17.8993127,17.5222334 18.0057983,17.2666375 18.0057983,17 C18.0057983,16.7333625 17.8993127,16.4777666 17.71,16.29 Z M2,8 C2,4.6862915 4.6862915,2 8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 Z"></path>
</svg><span>搜索</span><span>⌘K</span></a><a href="https://github.com/jaywcjlove/reference/blob/main/docs/cmake.md" class="edit" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><button id="darkMode" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="light" height="1em" width="1em">
<path d="M6.995 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007-2.246-5.007-5.007-5.007S6.995 9.239 6.995 12zM11 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2H2zm17 0h3v2h-3zM5.637 19.778l-1.414-1.414 2.121-2.121 1.414 1.414zM16.242 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.344 7.759 4.223 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" class="dark" height="1em" width="1em">
<path d="M12 11.807A9.002 9.002 0 0 1 10.049 2a9.942 9.942 0 0 0-5.12 2.735c-3.905 3.905-3.905 10.237 0 14.142 3.906 3.906 10.237 3.905 14.143 0a9.946 9.946 0 0 0 2.735-5.119A9.003 9.003 0 0 1 12 11.807z"></path>
</svg>
</button><script src="../js/dark.js?v=1.8.3"></script><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="wrap h1body-exist max-container"><header class="wrap-header h1wrap"><h1 id="cmake-备忘清单"><svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em">
<path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"></path>
</svg>
<a aria-hidden="true" tabindex="-1" href="#cmake-备忘清单"><span class="icon icon-link"></span></a>CMake 备忘清单</h1><div class="wrap-body">
<p>本清单提供了对 CMake 的入门简要概述,以及 CMake 常用示例</p>
</div></header><div class="menu-tocs"><div class="menu-btn"><svg aria-hidden="true" fill="currentColor" height="1em" width="1em" viewBox="0 0 16 16" version="1.1" data-view-component="true">
<path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path>
</svg></div><div class="menu-modal"><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#入门">入门</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#hello-cmake">Hello CMake</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#cmakeliststxt">CMakeLists.txt</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#maincpp">main.cpp</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#编译示例">编译示例</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#cmake">cmake</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#常用参数">常用参数</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#另见">另见</a></div></div><div class="h1wrap-body"><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="入门"><a aria-hidden="true" tabindex="-1" href="#入门"><span class="icon icon-link"></span></a>入门</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-exist"><div class="wrap-header h3wrap"><h3 id="hello-cmake"><a aria-hidden="true" tabindex="-1" href="#hello-cmake"><span class="icon icon-link"></span></a>Hello CMake</h3><div class="wrap-body">
<p>CMake 是一个用于配置跨平台源代码项目应该如何配置的工具建立在给定的平台上。</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">├── CMakeLists.txt <span class="token comment"># 希望运行的 CMake命令</span>
</span><span class="code-line">├── main.cpp <span class="token comment"># 带有main 的源文件</span>
</span><span class="code-line">├── include <span class="token comment"># 头文件目录</span>
</span><span class="code-line">│   └── header.h
</span><span class="code-line">└── src <span class="token comment"># 源代码目录</span>
</span><span class="code-line"> ├── a.c
</span><span class="code-line"> └── b.c
</span></code></pre>
<p>在此项目上运行 <code>CMake</code> 时,系统会要求您提供二进制目录,运行 <code>CMake</code> 不会创建最终的可执行文件,而是会为 <code>Visual Studio</code><code>XCode</code><code>makefile</code> 生成项目文件。 使用这些工具构建该项目</p>
<h4 id="cmakeliststxt"><a aria-hidden="true" tabindex="-1" href="#cmakeliststxt"><span class="icon icon-link"></span></a>CMakeLists.txt</h4>
<pre class="language-cmake"><code class="language-cmake code-highlight"><span class="code-line"><span class="token comment"># 设置可以使用的最低 CMake 版本</span>
</span><span class="code-line"><span class="token keyword">cmake_minimum_required</span><span class="token punctuation">(</span><span class="token property">VERSION</span> <span class="token number">3.5</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment"># 设置项目名称</span>
</span><span class="code-line"><span class="token keyword">project</span> <span class="token punctuation">(</span>hello_cmake<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment"># 添加可执行文件</span>
</span><span class="code-line"><span class="token keyword">add_executable</span><span class="token punctuation">(</span>hello_cmake main.cpp<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment"># 添加头文件目录</span>
</span><span class="code-line"><span class="token keyword">target_include_directories</span><span class="token punctuation">(</span>hello_cmake <span class="token namespace">PRIVATE</span> ./include<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment"># 批量添加源文件</span>
</span><span class="code-line"><span class="token keyword">file</span><span class="token punctuation">(</span>GLOB SRCS CONFIGURE_DEPENDS ./src/*.cpp<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">target_sources</span><span class="token punctuation">(</span>hello_cmake <span class="token namespace">PUBLIC</span> <span class="token punctuation">${</span>SRCS<span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment"># 添加第三方库</span>
</span><span class="code-line"><span class="token keyword">find_package</span><span class="token punctuation">(</span>OpenGL CONFIG REQUIRED<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment"># 链接第三方库</span>
</span><span class="code-line"><span class="token keyword">target_link_libraries</span><span class="token punctuation">(</span>hello_cmake <span class="token namespace">PRIVATE</span> OpenGL<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment"># 指定输出路径</span>
</span><span class="code-line"><span class="token keyword">set_property</span><span class="token punctuation">(</span>TARGET hello_cmake <span class="token punctuation">${</span><span class="token variable">CMAKE_SOURCE_DIR</span><span class="token punctuation">}</span>/bin<span class="token punctuation">)</span>
</span><span class="code-line">
</span></code></pre>
<h4 id="maincpp"><a aria-hidden="true" tabindex="-1" href="#maincpp"><span class="icon icon-link"></span></a>main.cpp</h4>
<pre class="language-c"><code class="language-c code-highlight"><span class="code-line"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&#x3C;iostream></span></span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">int</span> argc<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>argv<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> std<span class="token operator">::</span>cout <span class="token operator">&#x3C;&#x3C;</span> <span class="token string">"Hello CMake!"</span> <span class="token operator">&#x3C;&#x3C;</span> std<span class="token operator">::</span>endl<span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<h4 id="编译示例"><a aria-hidden="true" tabindex="-1" href="#编译示例"><span class="icon icon-link"></span></a>编译示例</h4>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ <span class="token function">mkdir</span> build <span class="token comment"># 创建 build 目录</span>
</span><span class="code-line">$ <span class="token builtin class-name">cd</span> build <span class="token comment"># 进入目录</span>
</span><span class="code-line">$ cmake <span class="token punctuation">..</span> <span class="token comment"># 目录的上一级目录运行命令</span>
</span><span class="code-line">$ <span class="token function">make</span> <span class="token comment"># 使用对应的编译工具</span>
</span><span class="code-line">$ ./hello_cmake <span class="token comment"># 运行生成的 hello_cmake</span>
</span><span class="code-line">Hello CMake<span class="token operator">!</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="cmake"><a aria-hidden="true" tabindex="-1" href="#cmake"><span class="icon icon-link"></span></a>cmake</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<p>生成项目构建系统</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ cmake <span class="token punctuation">[</span><span class="token operator">&#x3C;</span>options<span class="token operator">></span><span class="token punctuation">]</span> <span class="token operator">&#x3C;</span>path-to-source <span class="token operator">|</span> path-to-existing-build<span class="token operator">></span>bash
</span><span class="code-line">$ cmake <span class="token punctuation">[</span><span class="token operator">&#x3C;</span>options<span class="token operator">></span><span class="token punctuation">]</span> <span class="token parameter variable">-S</span> <span class="token operator">&#x3C;</span>path-to-source<span class="token operator">></span> <span class="token parameter variable">-B</span> <span class="token operator">&#x3C;</span>path-to-build<span class="token operator">></span>
</span></code></pre>
<p>建立一个项目</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ cmake <span class="token parameter variable">--build</span> <span class="token operator">&#x3C;</span>dir<span class="token operator">></span> <span class="token punctuation">[</span><span class="token operator">&#x3C;</span>options<span class="token operator">></span><span class="token punctuation">]</span> <span class="token punctuation">[</span>-- <span class="token operator">&#x3C;</span>build-tool-options<span class="token operator">></span><span class="token punctuation">]</span>
</span></code></pre>
<p>安装项目</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ cmake <span class="token parameter variable">--install</span> <span class="token operator">&#x3C;</span>dir<span class="token operator">></span> <span class="token punctuation">[</span><span class="token operator">&#x3C;</span>options<span class="token operator">></span><span class="token punctuation">]</span>
</span></code></pre>
<p>运行指定项目</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">cmake <span class="token parameter variable">--build</span> <span class="token operator">&#x3C;</span>dir<span class="token operator">></span> <span class="token parameter variable">--target</span> <span class="token operator">&#x3C;</span>project<span class="token operator">></span>
</span></code></pre>
<p>打开一个项目</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ cmake <span class="token parameter variable">--open</span> <span class="token operator">&#x3C;</span>dir<span class="token operator">></span>
</span></code></pre>
<p>运行脚本</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ cmake <span class="token punctuation">[</span>-D <span class="token operator">&#x3C;</span>var<span class="token operator">>=</span><span class="token operator">&#x3C;</span>value<span class="token operator">></span><span class="token punctuation">]</span><span class="token punctuation">..</span>. <span class="token parameter variable">-P</span> <span class="token operator">&#x3C;</span>cmake-script-file<span class="token operator">></span>
</span></code></pre>
<p>运行命令行工具</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ cmake <span class="token parameter variable">-E</span> <span class="token operator">&#x3C;</span>command<span class="token operator">></span> <span class="token punctuation">[</span><span class="token operator">&#x3C;</span>options<span class="token operator">></span><span class="token punctuation">]</span>
</span></code></pre>
<p>运行查找包工具</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ cmake --find-package <span class="token punctuation">[</span><span class="token operator">&#x3C;</span>options<span class="token operator">></span><span class="token punctuation">]</span>
</span></code></pre>
<p>运行工作流预设</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ cmake <span class="token parameter variable">--workflow</span> <span class="token punctuation">[</span><span class="token operator">&#x3C;</span>options<span class="token operator">></span><span class="token punctuation">]</span>
</span></code></pre>
<p>查看帮助</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ cmake --help<span class="token punctuation">[</span>-<span class="token operator">&#x3C;</span>topic<span class="token operator">></span><span class="token punctuation">]</span>
</span></code></pre>
<h4 id="常用参数"><a aria-hidden="true" tabindex="-1" href="#常用参数"><span class="icon icon-link"></span></a>常用参数</h4>
<ul>
<li>方式一: 在<code>CMakeLists.txt</code>中使用<code>set(KEY VAL)</code>函数</li>
<li>方式二: 在执行<code>cmake ...</code> -D<arg> 指定(只需一次,推荐)</arg></li>
</ul>
<pre class="language-cmake"><code class="language-cmake code-highlight"><span class="code-line"><span class="token comment"># 指定编译参数(Debug/Release/MinSizeRel/RelWithDebInfo)</span>
</span><span class="code-line">$ cmake ... -D <span class="token variable">CMAKE_BUILD_TYPE</span>=DEBUG
</span><span class="code-line"><span class="token comment"># 指定编译链工具(windows下vcpkg需要)</span>
</span><span class="code-line">$ cmake ... -D <span class="token variable">CMAKE_TOOLCHAIN_FILE</span>=&#x3C;vcpkg_path<span class="token punctuation">></span>/scripts/buildsystems/vcpkg.cmake
</span><span class="code-line"><span class="token comment"># 指定编译器</span>
</span><span class="code-line">$ cmake ... -D CAMKE_C_COMPILER=...
</span><span class="code-line">$ cmake ... -D CAMKE_CXX_COMPILER=...
</span><span class="code-line"><span class="token comment"># 指定生成器</span>
</span><span class="code-line">$ cmake .. -G <span class="token string">"Unix Makefile"</span>
</span><span class="code-line">$ cmake .. -G <span class="token string">"Ninja"</span>
</span><span class="code-line">$ cmake .. -G <span class="token string">"Visual Studio 17 2022"</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 设置Cpp标准</span>
</span><span class="code-line"><span class="token keyword">set</span><span class="token punctuation">(</span><span class="token variable">CMAKE_CXX_STANDARD</span> <span class="token number">17</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">set</span><span class="token punctuation">(</span><span class="token variable">CMAKE_CXX_STANDARD_REQUIRED</span> <span class="token boolean">ON</span><span class="token punctuation">)</span> <span class="token comment"># 在检测到不支持时出错</span>
</span><span class="code-line"><span class="token keyword">set</span><span class="token punctuation">(</span><span class="token variable">CMAKE_CXX_EXTENSIONS</span> <span class="token boolean">ON</span><span class="token punctuation">)</span> <span class="token comment">#一般设为off否则在msvc上没有特性会出错</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-not-exist"><div class="wrap-header h2wrap"><h2 id="另见"><a aria-hidden="true" tabindex="-1" href="#另见"><span class="icon icon-link"></span></a>另见</h2><div class="wrap-body">
<ul>
<li><a href="http://ttroy50.github.io/cmake-examples/">CMake Examples</a> <em>(ttroy50.github.io)</em></li>
</ul>
</div></div><div class="h2wrap-body"></div></div></div><script src="https://giscus.app/client.js" data-repo="jaywcjlove/reference" data-repo-id="R_kgDOID2-Mw" data-category="Q&#x26;A" data-category-id="DIC_kwDOID2-M84CS5wo" data-mapping="pathname" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="bottom" data-theme="dark" data-lang="zh-CN" crossorigin="anonymous" async></script><div class="giscus"></div></div><footer class="footer-wrap"><footer class="max-container">© 2022 <a href="https://wangchujiang.com/#/app" target="_blank">Kenny Wang</a>.</footer></footer><script src="../data.js?v=1.8.3" defer></script><script src="../js/fuse.min.js?v=1.8.3" defer></script><script src="../js/main.js?v=1.8.3" defer></script><div id="mysearch"><div class="mysearch-box"><div class="mysearch-input"><div><svg xmlns="http://www.w3.org/2000/svg" height="1em" width="1em" viewBox="0 0 18 18">
<path fill="currentColor" d="M17.71,16.29 L14.31,12.9 C15.4069846,11.5024547 16.0022094,9.77665502 16,8 C16,3.581722 12.418278,0 8,0 C3.581722,0 0,3.581722 0,8 C0,12.418278 3.581722,16 8,16 C9.77665502,16.0022094 11.5024547,15.4069846 12.9,14.31 L16.29,17.71 C16.4777666,17.8993127 16.7333625,18.0057983 17,18.0057983 C17.2666375,18.0057983 17.5222334,17.8993127 17.71,17.71 C17.8993127,17.5222334 18.0057983,17.2666375 18.0057983,17 C18.0057983,16.7333625 17.8993127,16.4777666 17.71,16.29 Z M2,8 C2,4.6862915 4.6862915,2 8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 Z"></path>
</svg><input id="mysearch-input" type="search" placeholder="搜索" autocomplete="off"><div class="mysearch-clear"></div></div><button id="mysearch-close" type="button">搜索</button></div><div class="mysearch-result"><div id="mysearch-menu"></div><div id="mysearch-content"></div></div></div></div></body>
</html>