[{"data":1,"prerenderedAt":1656},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi":3,"wiki-doc-items-2023-10-05-cplusplus-jiao-xue":1276},{"id":4,"title":5,"body":6,"chapterDepth":1262,"chapterOrder":1263,"date":1264,"description":12,"docKey":1265,"docRoot":1266,"docTitle":1267,"extension":1268,"isWikiDoc":1269,"isWikiIndex":1270,"meta":1271,"navigation":1269,"path":1272,"seo":1273,"stem":1274,"wikiDepth":212,"__hash__":1275},"wiki\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试.md","C++开发环境搭建与测试",{"type":7,"value":8,"toc":1239},"minimark",[9,13,16,31,40,50,54,61,64,74,77,94,97,184,193,196,201,255,262,266,296,383,386,427,430,434,441,447,450,453,458,469,477,480,496,501,505,508,517,522,525,531,534,539,542,547,551,554,568,571,621,624,645,654,659,663,695,701,704,706,710,713,716,723,754,757,762,767,770,773,776,796,799,804,809,813,816,822,916,923,976,979,986,992,995,1047,1050,1053,1057,1060,1066,1069,1085,1088,1103,1107,1110,1126,1128,1143,1147,1153,1169,1172,1195,1198,1201,1204,1221,1235],[10,11,12],"p",{},"这一章先不改代码，只做一件很具体的事：",[10,14,15],{},"在 Linux 上把我准备好的 CMake 模板跑起来。",[10,17,18,19,23,24,23,27,30],{},"如果你刚开始学 C++，看到 ",[20,21,22],"code",{},"CMake","、",[20,25,26],{},"Ninja",[20,28,29],{},"target_link_libraries"," 这些名字不用紧张。本章不要求你理解它们的全部原理，先照着步骤把工程跑通。等后面学到头文件、分文件编写、第三方库时，再回来看这些内容会更自然。",[10,32,33,34,39],{},"完整 CMake 模板详解放在后面的 ",[35,36,38],"a",{"href":37},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","CMake工程模板","。本章只关心两件事：",[41,42,43,47],"ol",{},[44,45,46],"li",{},"你的电脑能不能编译并运行 C++ 工程。",[44,48,49],{},"VSCode 能不能用 F5 调试这个工程。",[51,52,53],"h2",{"id":53},"本章最终效果",[10,55,56,57,60],{},"做完本章后，你会得到一个名为 ",[20,58,59],{},"hello_cpp"," 的文件夹，里面是完整的 CMake 模板工程。",[10,62,63],{},"原样运行模板时，输出类似：",[65,66,72],"pre",{"className":67,"code":69,"language":70,"meta":71},[68],"language-text","[lib1] Vector v = 1 2 3\n[lib1] Norm = 3.74166\n[lib2] Matrix m =\n1 2\n3 4\n[lib2] Determinant = -2\n","text","",[20,73,69],{"__ignoreMap":71},[10,75,76],{},"这一章会按下面的顺序来：",[41,78,79,82,85,88,91],{},[44,80,81],{},"在 Ubuntu 或 Fedora 上安装 C++ 开发工具。",[44,83,84],{},"下载我准备好的 CMake 模板。",[44,86,87],{},"先原样运行模板，确认环境没问题。",[44,89,90],{},"看一下模板里哪些文件和后面的学习有关。",[44,92,93],{},"用 VSCode 按 F5 调试模板程序。",[10,95,96],{},"先认识几个名字，后面看到它们就不会太突然：",[98,99,100,114],"table",{},[101,102,103],"thead",{},[104,105,106,111],"tr",{},[107,108,110],"th",{"align":109},"left","名字",[107,112,113],{"align":109},"先这样理解",[115,116,117,128,141,150,160,174],"tbody",{},[104,118,119,125],{},[120,121,122],"td",{"align":109},[20,123,124],{},"g++",[120,126,127],{"align":109},"真正编译 C++ 代码的编译器",[104,129,130,134],{},[120,131,132],{"align":109},[20,133,22],{},[120,135,136,137,140],{"align":109},"读取 ",[20,138,139],{},"CMakeLists.txt","，生成构建规则",[104,142,143,147],{},[120,144,145],{"align":109},[20,146,26],{},[120,148,149],{"align":109},"按照 CMake 生成的规则执行编译",[104,151,152,157],{},[120,153,154],{"align":109},[20,155,156],{},"GDB",[120,158,159],{"align":109},"调试器，VSCode 按 F5 时会用到",[104,161,162,171],{},[120,163,164,167,168],{"align":109},[20,165,166],{},"lib1"," \u002F ",[20,169,170],{},"lib2",[120,172,173],{"align":109},"模板里自带的两个示例小库，本章先不改它们",[104,175,176,181],{},[120,177,178],{"align":109},[20,179,180],{},"cmake_template",[120,182,183],{"align":109},"模板当前生成的可执行程序名",[10,185,186,187,189,190,192],{},"注意：",[20,188,59],{}," 是我们 clone 下来的文件夹名，",[20,191,180],{}," 是这个工程当前生成的程序名。它们不是一回事。",[51,194,195],{"id":195},"安装基础工具",[197,198,200],"h3",{"id":199},"ubuntu-debian","Ubuntu \u002F Debian",[65,202,206],{"className":203,"code":204,"language":205,"meta":71,"style":71},"language-bash shiki shiki-themes github-light github-dark","sudo apt update\nsudo apt install git cmake ninja-build gcc g++ gdb libeigen3-dev\n","bash",[20,207,208,224],{"__ignoreMap":71},[209,210,213,217,221],"span",{"class":211,"line":212},"line",1,[209,214,216],{"class":215},"sScJk","sudo",[209,218,220],{"class":219},"sZZnC"," apt",[209,222,223],{"class":219}," update\n",[209,225,227,229,231,234,237,240,243,246,249,252],{"class":211,"line":226},2,[209,228,216],{"class":215},[209,230,220],{"class":219},[209,232,233],{"class":219}," install",[209,235,236],{"class":219}," git",[209,238,239],{"class":219}," cmake",[209,241,242],{"class":219}," ninja-build",[209,244,245],{"class":219}," gcc",[209,247,248],{"class":219}," g++",[209,250,251],{"class":219}," gdb",[209,253,254],{"class":219}," libeigen3-dev\n",[10,256,257,258,261],{},"这里安装了 ",[20,259,260],{},"libeigen3-dev","，是因为模板原始示例里用到了 Eigen。先装上它，模板就能直接跑起来。",[197,263,265],{"id":264},"fedora","Fedora",[65,267,269],{"className":203,"code":268,"language":205,"meta":71,"style":71},"sudo dnf install git cmake ninja-build gcc gcc-c++ gdb eigen3-devel\n",[20,270,271],{"__ignoreMap":71},[209,272,273,275,278,280,282,284,286,288,291,293],{"class":211,"line":212},[209,274,216],{"class":215},[209,276,277],{"class":219}," dnf",[209,279,233],{"class":219},[209,281,236],{"class":219},[209,283,239],{"class":219},[209,285,242],{"class":219},[209,287,245],{"class":219},[209,289,290],{"class":219}," gcc-c++",[209,292,251],{"class":219},[209,294,295],{"class":219}," eigen3-devel\n",[98,297,298,311],{},[101,299,300],{},[104,301,302,305,308],{},[107,303,304],{},"Ubuntu\u002FDebian",[107,306,307],{},"Fedora\u002FRHEL",[107,309,310],{},"说明",[115,312,313,323,333,343,353,363,373],{},[104,314,315,318,320],{},[120,316,317],{},"git",[120,319,317],{},[120,321,322],{},"版本控制工具",[104,324,325,328,330],{},[120,326,327],{},"cmake",[120,329,327],{},[120,331,332],{},"CMake 构建工具",[104,334,335,338,340],{},[120,336,337],{},"ninja-build",[120,339,337],{},[120,341,342],{},"Ninja 构建工具",[104,344,345,348,350],{},[120,346,347],{},"gcc",[120,349,347],{},[120,351,352],{},"C 编译器",[104,354,355,357,360],{},[120,356,124],{},[120,358,359],{},"gcc-c++",[120,361,362],{},"C++ 编译器",[104,364,365,368,370],{},[120,366,367],{},"gdb",[120,369,367],{},[120,371,372],{},"GNU 调试器",[104,374,375,377,380],{},[120,376,260],{},[120,378,379],{},"eigen3-devel",[120,381,382],{},"Eigen3 C++ 数值库开发文件",[51,384,385],{"id":385},"检查工具是否安装成功",[65,387,389],{"className":203,"code":388,"language":205,"meta":71,"style":71},"git --version\ncmake --version\nninja --version\ng++ --version\ngdb --version\n",[20,390,391,399,405,413,420],{"__ignoreMap":71},[209,392,393,395],{"class":211,"line":212},[209,394,317],{"class":215},[209,396,398],{"class":397},"sj4cs"," --version\n",[209,400,401,403],{"class":211,"line":226},[209,402,327],{"class":215},[209,404,398],{"class":397},[209,406,408,411],{"class":211,"line":407},3,[209,409,410],{"class":215},"ninja",[209,412,398],{"class":397},[209,414,416,418],{"class":211,"line":415},4,[209,417,124],{"class":215},[209,419,398],{"class":397},[209,421,423,425],{"class":211,"line":422},5,[209,424,367],{"class":215},[209,426,398],{"class":397},[10,428,429],{},"这些命令都能输出版本号，就说明基础环境已经可用。",[51,431,433],{"id":432},"安装vscode","安装VScode",[10,435,436],{},[35,437,438],{"href":438,"rel":439},"https:\u002F\u002Fcode.visualstudio.com\u002FDownload",[440],"nofollow",[10,442,443],{},[444,445],"img",{"alt":71,"src":446},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage23.webp",[10,448,449],{},"如果是debian系下载deb,如果是rhel系下载rpm.",[10,451,452],{},"下载完之后，点击浏览器，找到这个安装包的文件夹，并在该路径打开终端。",[10,454,455],{},[444,456],{"alt":71,"src":457},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage24.webp",[10,459,460,461,464,465,468],{},"Debian系：输入",[20,462,463],{},"sudo apt install .\u002Fcode","然后按",[20,466,467],{},"tab","按键补齐文件名，回车。",[10,470,471,472,464,475,468],{},"RHEL系：输入",[20,473,474],{},"sudo dnf install .\u002Fcode",[20,476,467],{},[10,478,479],{},"例如补齐后的：",[65,481,483],{"className":203,"code":482,"language":205,"meta":71,"style":71},"sudo dnf install .\u002Fcode-1.102.1-1752598767.el8.x86_64.rpm\n",[20,484,485],{"__ignoreMap":71},[209,486,487,489,491,493],{"class":211,"line":212},[209,488,216],{"class":215},[209,490,277],{"class":219},[209,492,233],{"class":219},[209,494,495],{"class":219}," .\u002Fcode-1.102.1-1752598767.el8.x86_64.rpm\n",[10,497,498],{},[444,499],{"alt":71,"src":500},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage25.webp",[51,502,504],{"id":503},"配置vscode","配置VScode",[10,506,507],{},"然后打开VScode，在终端输入下面的命令",[65,509,511],{"className":203,"code":510,"language":205,"meta":71,"style":71},"code\n",[20,512,513],{"__ignoreMap":71},[209,514,515],{"class":211,"line":212},[209,516,510],{"class":215},[10,518,519],{},[444,520],{"alt":71,"src":521},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2025\u002F07\u002F18\u002Fimage26.webp",[10,523,524],{},"然后可以配置一个环境单独给C++环境使用，避免和默认环境冲突。",[10,526,527],{},[444,528],{"alt":529,"src":530},"alt text","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2026\u002F04\u002F17\u002F1776420070033.webp",[10,532,533],{},"进行一些设置，按我的来就可以",[10,535,536],{},[444,537],{"alt":529,"src":538},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780705209213.webp",[10,540,541],{},"选中你创建的CMake配置",[10,543,544],{},[444,545],{"alt":529,"src":546},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780705255118.webp",[51,548,550],{"id":549},"安装-vscode-扩展","安装 VSCode 扩展",[10,552,553],{},"建议在 VSCode 里安装这些扩展：",[41,555,556,559,562,565],{},[44,557,558],{},"CMake Tools",[44,560,561],{},"C\u002FC++",[44,563,564],{},"C\u002FC++ DevTools",[44,566,567],{},"clangd",[10,569,570],{},"它们的分工是：",[98,572,573,583],{},[101,574,575],{},[104,576,577,580],{},[107,578,579],{"align":109},"扩展",[107,581,582],{"align":109},"作用",[115,584,585,596,603,610],{},[104,586,587,589],{},[120,588,558],{"align":109},[120,590,591,592,595],{"align":109},"识别 ",[20,593,594],{},"CMakePresets.json","，执行 configure\u002Fbuild，选择 target，管理 CMake 工程构建流程",[104,597,598,600],{},[120,599,561],{"align":109},[120,601,602],{"align":109},"微软官方 C\u002FC++ 扩展，提供基础 IntelliSense、断点调试、GDB\u002FLLDB 调试配置支持",[104,604,605,607],{},[120,606,564],{"align":109},[120,608,609],{"align":109},"C\u002FC++ 扩展的辅助工具，提供更方便的调试信息展示、内存\u002F寄存器\u002F变量查看等增强能力",[104,611,612,614],{},[120,613,567],{"align":109},[120,615,616,617,620],{"align":109},"基于 ",[20,618,619],{},"compile_commands.json"," 提供更准确的代码补全、跳转定义、查找引用、诊断提示、重构能力",[10,622,623],{},"简单说：",[625,626,627,632,640],"ul",{},[44,628,629,631],{},[20,630,558],{}," 负责构建工程；",[44,633,634,636,637,639],{},[20,635,561],{}," 和 ",[20,638,564],{}," 主要负责调试；",[44,641,642,644],{},[20,643,567],{}," 主要负责代码提示、跳转、诊断和重构。",[10,646,647,648,650,651,653],{},"如果你使用 ",[20,649,567],{}," 做代码提示，建议关闭或弱化 ",[20,652,561],{}," 扩展的 IntelliSense，避免两个语言服务器同时工作导致提示重复或冲突。",[10,655,656],{},[444,657],{"alt":529,"src":658},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780705309128.webp",[51,660,662],{"id":661},"clone-cmake-模板","clone CMake 模板",[65,664,666],{"className":203,"code":665,"language":205,"meta":71,"style":71},"git clone https:\u002F\u002Fgithub.com\u002Ftungchiahui\u002FCMake_Template.git hello_cpp\ncd hello_cpp\ncode .\n",[20,667,668,681,688],{"__ignoreMap":71},[209,669,670,672,675,678],{"class":211,"line":212},[209,671,317],{"class":215},[209,673,674],{"class":219}," clone",[209,676,677],{"class":219}," https:\u002F\u002Fgithub.com\u002Ftungchiahui\u002FCMake_Template.git",[209,679,680],{"class":219}," hello_cpp\n",[209,682,683,686],{"class":211,"line":226},[209,684,685],{"class":397},"cd",[209,687,680],{"class":219},[209,689,690,692],{"class":211,"line":407},[209,691,20],{"class":215},[209,693,694],{"class":219}," .\n",[10,696,697,698,700],{},"这里把项目目录命名为 ",[20,699,59],{},"。后面所有命令都默认在这个目录里执行。",[10,702,703],{},"刚开始学习时先不要管 Git 历史，也不要急着改很多文件。第一步只做一件事：确认这个模板能在你的电脑上运行。",[10,705,541],{},[10,707,708],{},[444,709],{"alt":529,"src":546},[51,711,712],{"id":712},"先原样跑通模板",[197,714,715],{"id":715},"用命令行方式运行",[10,717,718,719,722],{},"先不要急着改代码。按",[20,720,721],{},"ctrl + ~","弹出VScode终端并运行下面三行命令：",[65,724,726],{"className":203,"code":725,"language":205,"meta":71,"style":71},"cmake --preset linux-debug\ncmake --build --preset linux-debug\n.\u002Fbuild\u002Flinux-debug\u002Fsrc\u002Fcmake_template\n",[20,727,728,738,749],{"__ignoreMap":71},[209,729,730,732,735],{"class":211,"line":212},[209,731,327],{"class":215},[209,733,734],{"class":397}," --preset",[209,736,737],{"class":219}," linux-debug\n",[209,739,740,742,745,747],{"class":211,"line":226},[209,741,327],{"class":215},[209,743,744],{"class":397}," --build",[209,746,734],{"class":397},[209,748,737],{"class":219},[209,750,751],{"class":211,"line":407},[209,752,753],{"class":215},".\u002Fbuild\u002Flinux-debug\u002Fsrc\u002Fcmake_template\n",[10,755,756],{},"如果输出类似：",[65,758,760],{"className":759,"code":69,"language":70,"meta":71},[68],[20,761,69],{"__ignoreMap":71},[10,763,764],{},[444,765],{"alt":529,"src":766},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780705705759.webp",[10,768,769],{},"说明工程、编译器、CMake、Ninja、Eigen 都工作正常。到这里，最麻烦的环境部分就已经过关了。",[10,771,772],{},"注意：日常开发时可以直接运行 build 目录里的程序，不需要每次 install。",[10,774,775],{},"只有在验证安装布局时，才需要：",[65,777,779],{"className":203,"code":778,"language":205,"meta":71,"style":71},"cmake --install build\u002Flinux-debug\n.\u002Finstall\u002Flinux-debug\u002Fbin\u002Fcmake_template\n",[20,780,781,791],{"__ignoreMap":71},[209,782,783,785,788],{"class":211,"line":212},[209,784,327],{"class":215},[209,786,787],{"class":397}," --install",[209,789,790],{"class":219}," build\u002Flinux-debug\n",[209,792,793],{"class":211,"line":226},[209,794,795],{"class":215},".\u002Finstall\u002Flinux-debug\u002Fbin\u002Fcmake_template\n",[10,797,798],{},"出现以下,即成功!",[65,800,802],{"className":801,"code":69,"language":70,"meta":71},[68],[20,803,69],{"__ignoreMap":71},[10,805,806],{},[444,807],{"alt":529,"src":808},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780705741785.webp",[197,810,812],{"id":811},"用vscode图形化方式运行","用VScode图形化方式运行",[10,814,815],{},"我们要用VScode图形化方式去运行上面那些命令:",[10,817,818,819,821],{},"点击左侧边的",[20,820,22],{},":",[41,823,824,844,872],{},[44,825,826,827,830,831,834,835,821,838,841],{},"首先要配置",[20,828,829],{},"cmake --preset linux-debug",",等同于在界面中是点击",[20,832,833],{},"Configure","按钮,并选择",[20,836,837],{},"Linux Debug",[839,840],"br",{},[444,842],{"alt":529,"src":843},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780705995297.webp",[44,845,846,847,850,851,854,855,857,860,862,863,866,867,869],{},"然后",[20,848,849],{},"cmake --build --preset linux-debug","这个配置会在你配置",[20,852,853],{},"configure","时被自动配置:",[839,856],{},[444,858],{"alt":529,"src":859},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780706149481.webp",[839,861],{},"然后你要手动点击左下角的",[20,864,865],{},"Build","按钮来进行build:",[839,868],{},[444,870],{"alt":529,"src":871},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707106120.webp",[44,873,846,874,877,878,880,881,884,886,887,890,892,895,897,898,900,901,636,904,907,908,910,911,913],{},[20,875,876],{},".\u002Fbuild\u002Flinux-debug\u002Fsrc\u002Fcmake_template","运行这个程序等同于:",[839,879],{},"先配置程序路径:\n",[444,882],{"alt":529,"src":883},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707152235.webp",[839,885],{},"运行程序:\nDebug是对程序进行debug,而Launch是直接运行程序不debug,除非你有debug需求,一般咱们直接用launch.\n",[444,888],{"alt":529,"src":889},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707202465.webp",[839,891],{},[444,893],{"alt":529,"src":894},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707302786.webp",[839,896],{},"除了上面的操作入口，VSCode 底部状态栏中，",[20,899,865],{}," 按钮旁边也有 ",[20,902,903],{},"Debug",[20,905,906],{},"Launch"," 快捷按钮。选择好 ",[20,909,180],{}," target 并完成构建后，可以直接点击这里运行或调试程序。",[839,912],{},[444,914],{"alt":529,"src":915},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780715507074.webp",[10,917,918,919,922],{},"接下来是要讲如何把生成产物放进",[20,920,921],{},"install",",一般只有你要发行一个程序之类的才install,平常只用上面的build即可(测试完改回build的配置).",[41,924,925,957],{},[44,926,927,930,931,934,935,938,939,941,944,946,947,950,951,954,955,938],{},[20,928,929],{},"cmake --install build\u002Flinux-debug","等同于:\n在 VSCode 里按 ",[20,932,933],{},"Ctrl+Shift+P","，然后输入",[20,936,937],{},"CMake: Install",".",[839,940],{},[444,942],{"alt":529,"src":943},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707509033.webp",[839,945],{},"解释: 这个命令会调用当前配置的 ",[20,948,949],{},"build preset"," 对应的 ",[20,952,953],{},"cmake --install \u003CbuildDir>","。\n如果你选择了 linux-debug preset，它等同于",[20,956,929],{},[44,958,846,959,962,963,965,968,970,971,973,974,938],{},[20,960,961],{},".\u002Finstall\u002Flinux-debug\u002Fbin\u002Fcmake_template","运行这个程序等同于:\n先配置程序路径:",[839,964],{},[444,966],{"alt":529,"src":967},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707743776.webp",[839,969],{},"运行程序的方式和上面一样,也是点",[20,972,903],{},"或者",[20,975,906],{},[51,977,978],{"id":978},"模板当前结构",[10,980,981,982,985],{},"现在看一下模板里和本章有关的文件。先不用理解每个 CMake 选项，只要知道 ",[20,983,984],{},"src\u002F"," 下面放的是代码：",[65,987,990],{"className":988,"code":989,"language":70,"meta":71},[68],".\n├── CMakeLists.txt\n├── CMakePresets.json\n├── .vscode\u002F\n│   └── launch.json\n├── cmake\u002F\n│   └── ProjectOptions.cmake\n└── src\u002F\n    ├── CMakeLists.txt\n    ├── main.cpp\n    ├── lib1\u002F\n    │   ├── CMakeLists.txt\n    │   ├── inc\u002Flib1\u002Feigen3_test.hpp\n    │   └── src\u002Feigen3_test.cpp\n    └── lib2\u002F\n        ├── CMakeLists.txt\n        ├── inc\u002Flib2\u002Feigen3_test.hpp\n        └── src\u002Feigen3_test.cpp\n",[20,991,989],{"__ignoreMap":71},[10,993,994],{},"这里最重要的是：",[98,996,997,1006],{},[101,998,999],{},[104,1000,1001,1004],{},[107,1002,1003],{"align":109},"位置",[107,1005,582],{"align":109},[115,1007,1008,1018,1028,1038],{},[104,1009,1010,1015],{},[120,1011,1012],{"align":109},[20,1013,1014],{},"src\u002Fmain.cpp",[120,1016,1017],{"align":109},"程序入口，运行时从这里开始",[104,1019,1020,1025],{},[120,1021,1022],{"align":109},[20,1023,1024],{},"src\u002Flib1\u002F",[120,1026,1027],{"align":109},"第一个示例小库",[104,1029,1030,1035],{},[120,1031,1032],{"align":109},[20,1033,1034],{},"src\u002Flib2\u002F",[120,1036,1037],{"align":109},"第二个示例小库",[104,1039,1040,1044],{},[120,1041,1042],{"align":109},[20,1043,139],{},[120,1045,1046],{"align":109},"告诉 CMake 这个工程怎么构建",[10,1048,1049],{},"本章只需要认识这些位置，不需要修改它们。",[51,1051,1052],{"id":1052},"常见问题",[197,1054,1056],{"id":1055},"找不到-ninja","找不到 Ninja",[10,1058,1059],{},"报错类似：",[65,1061,1064],{"className":1062,"code":1063,"language":70,"meta":71},[68],"CMake was unable to find a build program corresponding to \"Ninja\"\n",[20,1065,1063],{"__ignoreMap":71},[10,1067,1068],{},"安装：",[65,1070,1072],{"className":203,"code":1071,"language":205,"meta":71,"style":71},"sudo apt install ninja-build\n",[20,1073,1074],{"__ignoreMap":71},[209,1075,1076,1078,1080,1082],{"class":211,"line":212},[209,1077,216],{"class":215},[209,1079,220],{"class":219},[209,1081,233],{"class":219},[209,1083,1084],{"class":219}," ninja-build\n",[10,1086,1087],{},"或：",[65,1089,1091],{"className":203,"code":1090,"language":205,"meta":71,"style":71},"sudo dnf install ninja-build\n",[20,1092,1093],{"__ignoreMap":71},[209,1094,1095,1097,1099,1101],{"class":211,"line":212},[209,1096,216],{"class":215},[209,1098,277],{"class":219},[209,1100,233],{"class":219},[209,1102,1084],{"class":219},[197,1104,1106],{"id":1105},"找不到-gdb","找不到 gdb",[10,1108,1109],{},"调试时如果找不到 GDB：",[65,1111,1113],{"className":203,"code":1112,"language":205,"meta":71,"style":71},"sudo apt install gdb\n",[20,1114,1115],{"__ignoreMap":71},[209,1116,1117,1119,1121,1123],{"class":211,"line":212},[209,1118,216],{"class":215},[209,1120,220],{"class":219},[209,1122,233],{"class":219},[209,1124,1125],{"class":219}," gdb\n",[10,1127,1087],{},[65,1129,1131],{"className":203,"code":1130,"language":205,"meta":71,"style":71},"sudo dnf install gdb\n",[20,1132,1133],{"__ignoreMap":71},[209,1134,1135,1137,1139,1141],{"class":211,"line":212},[209,1136,216],{"class":215},[209,1138,277],{"class":219},[209,1140,233],{"class":219},[209,1142,1125],{"class":219},[197,1144,1146],{"id":1145},"改了-cmakeliststxt-后构建异常","改了 CMakeLists.txt 后构建异常",[10,1148,1149,1150,1152],{},"本章没有要求修改 ",[20,1151,139],{},"。如果你后面章节改了 CMake 文件后构建异常，可以重新 configure：",[65,1154,1156],{"className":203,"code":1155,"language":205,"meta":71,"style":71},"cmake --fresh --preset linux-debug\n",[20,1157,1158],{"__ignoreMap":71},[209,1159,1160,1162,1165,1167],{"class":211,"line":212},[209,1161,327],{"class":215},[209,1163,1164],{"class":397}," --fresh",[209,1166,734],{"class":397},[209,1168,737],{"class":219},[10,1170,1171],{},"或者删除构建目录：",[65,1173,1175],{"className":203,"code":1174,"language":205,"meta":71,"style":71},"rm -rf build\u002Flinux-debug\ncmake --preset linux-debug\n",[20,1176,1177,1187],{"__ignoreMap":71},[209,1178,1179,1182,1185],{"class":211,"line":212},[209,1180,1181],{"class":215},"rm",[209,1183,1184],{"class":397}," -rf",[209,1186,790],{"class":219},[209,1188,1189,1191,1193],{"class":211,"line":226},[209,1190,327],{"class":215},[209,1192,734],{"class":397},[209,1194,737],{"class":219},[51,1196,1197],{"id":1197},"下一步学什么",[10,1199,1200],{},"本章只是让你先拥有一个能运行、能调试的小工程。",[10,1202,1203],{},"后面的章节会从 C++ 基础语法开始讲：",[41,1205,1206,1209,1212,1215,1218],{},[44,1207,1208],{},"C++ 基础初识",[44,1210,1211],{},"数据类型与数据存放",[44,1213,1214],{},"输入输出",[44,1216,1217],{},"运算符",[44,1219,1220],{},"程序流程结构",[10,1222,1223,1224,1226,1227,167,1229,1231,1232,1234],{},"下一章开始，我们先只改 ",[20,1225,1014],{},"。等你学到函数分文件编写时，再去整理 ",[20,1228,166],{},[20,1230,170],{},"；等你学到工程组织、第三方库和构建系统时，再回来看 ",[35,1233,38],{"href":37},"。",[1236,1237,1238],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":71,"searchDepth":226,"depth":226,"links":1240},[1241,1242,1246,1247,1248,1249,1250,1251,1255,1256,1261],{"id":53,"depth":226,"text":53},{"id":195,"depth":226,"text":195,"children":1243},[1244,1245],{"id":199,"depth":407,"text":200},{"id":264,"depth":407,"text":265},{"id":385,"depth":226,"text":385},{"id":432,"depth":226,"text":433},{"id":503,"depth":226,"text":504},{"id":549,"depth":226,"text":550},{"id":661,"depth":226,"text":662},{"id":712,"depth":226,"text":712,"children":1252},[1253,1254],{"id":715,"depth":407,"text":715},{"id":811,"depth":407,"text":812},{"id":978,"depth":226,"text":978},{"id":1052,"depth":226,"text":1052,"children":1257},[1258,1259,1260],{"id":1055,"depth":407,"text":1056},{"id":1105,"depth":407,"text":1106},{"id":1145,"depth":407,"text":1146},{"id":1197,"depth":226,"text":1197},0,"0100","2023-10-05","2023-10-05-cplusplus-jiao-xue","\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md",true,false,{},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi",{"title":5,"description":12},"wiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","IOtF5pjYJL6ImaNytotMnu_d9fQGfllduhAUpv8hZTE",[1277,1278,1283,1287,1291,1295,1299,1304,1309,1314,1319,1324,1329,1334,1339,1344,1349,1354,1359,1364,1369,1374,1379,1384,1389,1394,1399,1404,1409,1414,1419,1424,1429,1434,1439,1444,1449,1454,1459,1464,1469,1474,1479,1484,1489,1494,1499,1504,1509,1514,1519,1524,1529,1534,1539,1544,1549,1554,1559,1564,1569,1574,1579,1584,1589,1594,1599,1604,1609,1614,1619,1624,1629,1634,1639,1644,1649,1652],{"path":1272,"stem":1274,"title":5,"date":1264,"chapterOrder":1263,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},{"path":1279,"stem":1280,"title":1281,"date":1264,"chapterOrder":1282,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基础初识","0200",{"path":1284,"stem":1285,"title":1211,"date":1264,"chapterOrder":1286,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","0300",{"path":1288,"stem":1289,"title":1214,"date":1264,"chapterOrder":1290,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","0400",{"path":1292,"stem":1293,"title":1217,"date":1264,"chapterOrder":1294,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","wiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","0500",{"path":1296,"stem":1297,"title":1220,"date":1264,"chapterOrder":1298,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","wiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","0600",{"path":1300,"stem":1301,"title":1302,"date":1264,"chapterOrder":1303,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","wiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","数组","0700",{"path":1305,"stem":1306,"title":1307,"date":1264,"chapterOrder":1308,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函数与头文件","0800",{"path":1310,"stem":1311,"title":1312,"date":1264,"chapterOrder":1313,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指针","0900",{"path":1315,"stem":1316,"title":1317,"date":1264,"chapterOrder":1318,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","结构体与共用体","1000",{"path":1320,"stem":1321,"title":1322,"date":1264,"chapterOrder":1323,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","内存分区与生命周期","1100",{"path":1325,"stem":1326,"title":1327,"date":1264,"chapterOrder":1328,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","wiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用","1200",{"path":1330,"stem":1331,"title":1332,"date":1264,"chapterOrder":1333,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","函数提高与命名空间","1300",{"path":1335,"stem":1336,"title":1337,"date":1264,"chapterOrder":1338,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封装","1400-0100",{"path":1340,"stem":1341,"title":1342,"date":1264,"chapterOrder":1343,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","对象初始化和清理","1400-0200",{"path":1345,"stem":1346,"title":1347,"date":1264,"chapterOrder":1348,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","对象模型与this指针","1400-0300",{"path":1350,"stem":1351,"title":1352,"date":1264,"chapterOrder":1353,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元与运算符重载","1400-0400",{"path":1355,"stem":1356,"title":1357,"date":1264,"chapterOrder":1358,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","继承","1400-0500",{"path":1360,"stem":1361,"title":1362,"date":1264,"chapterOrder":1363,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多态","1400-0600",{"path":1365,"stem":1366,"title":1367,"date":1264,"chapterOrder":1368,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","类和对象","1400",{"path":1370,"stem":1371,"title":1372,"date":1264,"chapterOrder":1373,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","wiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作","1500",{"path":1375,"stem":1376,"title":1377,"date":1264,"chapterOrder":1378,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","wiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":1380,"stem":1381,"title":1382,"date":1264,"chapterOrder":1383,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板","1700",{"path":1385,"stem":1386,"title":1387,"date":1264,"chapterOrder":1388,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初识","1800-0100",{"path":1390,"stem":1391,"title":1392,"date":1264,"chapterOrder":1393,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":1395,"stem":1396,"title":1397,"date":1264,"chapterOrder":1398,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器","1800-0300",{"path":1400,"stem":1401,"title":1402,"date":1264,"chapterOrder":1403,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-yu-deque-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector与deque容器","vector与deque容器","1800-0400",{"path":1405,"stem":1406,"title":1407,"date":1264,"chapterOrder":1408,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-stack-queue-list-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-stack-queue-list容器","stack \u002F queue \u002F list 容器","1800-0500",{"path":1410,"stem":1411,"title":1412,"date":1264,"chapterOrder":1413,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-set-map-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-set-map容器","set \u002F map 容器","1800-0600",{"path":1415,"stem":1416,"title":1417,"date":1264,"chapterOrder":1418,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-han-shu-dui-xiang-yu-wei-ci","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-函数对象与谓词","函数对象与谓词","1800-0700",{"path":1420,"stem":1421,"title":1422,"date":1264,"chapterOrder":1423,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-chang-yong-suan-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-常用算法","常用算法","1800-0800",{"path":1425,"stem":1426,"title":1427,"date":1264,"chapterOrder":1428,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高编程","1800",{"path":1430,"stem":1431,"title":1432,"date":1264,"chapterOrder":1433,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++类型转换","1900",{"path":1435,"stem":1436,"title":1437,"date":1264,"chapterOrder":1438,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":1440,"stem":1441,"title":1442,"date":1264,"chapterOrder":1443,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":1445,"stem":1446,"title":1447,"date":1264,"chapterOrder":1448,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":1450,"stem":1451,"title":1452,"date":1264,"chapterOrder":1453,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":1455,"stem":1456,"title":1457,"date":1264,"chapterOrder":1458,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","范围 for 循环","2000-0500",{"path":1460,"stem":1461,"title":1462,"date":1264,"chapterOrder":1463,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","结构化绑定","2000-0600",{"path":1465,"stem":1466,"title":1467,"date":1264,"chapterOrder":1468,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":1470,"stem":1471,"title":1472,"date":1264,"chapterOrder":1473,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":1475,"stem":1476,"title":1477,"date":1264,"chapterOrder":1478,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指针","2000-0900",{"path":1480,"stem":1481,"title":1482,"date":1264,"chapterOrder":1483,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移动语义","2000-1000",{"path":1485,"stem":1486,"title":1487,"date":1264,"chapterOrder":1488,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表达式","2000-1100",{"path":1490,"stem":1491,"title":1492,"date":1264,"chapterOrder":1493,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":1495,"stem":1496,"title":1497,"date":1264,"chapterOrder":1498,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":1500,"stem":1501,"title":1502,"date":1264,"chapterOrder":1503,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":1505,"stem":1506,"title":1507,"date":1264,"chapterOrder":1508,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":1510,"stem":1511,"title":1512,"date":1264,"chapterOrder":1513,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":1515,"stem":1516,"title":1517,"date":1264,"chapterOrder":1518,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":1520,"stem":1521,"title":1522,"date":1264,"chapterOrder":1523,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":1525,"stem":1526,"title":1527,"date":1264,"chapterOrder":1528,"chapterDepth":226,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread 与 join","2000-1900-0100",{"path":1530,"stem":1531,"title":1532,"date":1264,"chapterOrder":1533,"chapterDepth":226,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":1535,"stem":1536,"title":1537,"date":1264,"chapterOrder":1538,"chapterDepth":226,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":1540,"stem":1541,"title":1542,"date":1264,"chapterOrder":1543,"chapterDepth":226,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":1545,"stem":1546,"title":1547,"date":1264,"chapterOrder":1548,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","并发编程","2000-1900",{"path":1550,"stem":1551,"title":1552,"date":1264,"chapterOrder":1553,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":1555,"stem":1556,"title":1557,"date":1264,"chapterOrder":1558,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 简介","2000-2100",{"path":1560,"stem":1561,"title":1562,"date":1264,"chapterOrder":1563,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","现代C++","2000",{"path":1565,"stem":1566,"title":1567,"date":1264,"chapterOrder":1568,"chapterDepth":226,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定时器与异步 IO","2100-0100-0100",{"path":1570,"stem":1571,"title":1572,"date":1264,"chapterOrder":1573,"chapterDepth":226,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基础","2100-0100-0200",{"path":1575,"stem":1576,"title":1577,"date":1264,"chapterOrder":1578,"chapterDepth":226,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信","2100-0100-0300",{"path":1580,"stem":1581,"title":1582,"date":1264,"chapterOrder":1583,"chapterDepth":226,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信","2100-0100-0400",{"path":1585,"stem":1586,"title":1587,"date":1264,"chapterOrder":1588,"chapterDepth":226,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信","2100-0100-0500",{"path":1590,"stem":1591,"title":1592,"date":1264,"chapterOrder":1593,"chapterDepth":226,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成","2100-0100-0600",{"path":1595,"stem":1596,"title":1597,"date":1264,"chapterOrder":1598,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio异步IO库","2100-0100",{"path":1600,"stem":1601,"title":1602,"date":1264,"chapterOrder":1603,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen线性代数库","2100-0200",{"path":1605,"stem":1606,"title":1607,"date":1264,"chapterOrder":1608,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV计算机视觉库","2100-0300",{"path":1610,"stem":1611,"title":1612,"date":1264,"chapterOrder":1613,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL点云库","2100-0400",{"path":1615,"stem":1616,"title":1617,"date":1264,"chapterOrder":1618,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李群李代数库","2100-0500",{"path":1620,"stem":1621,"title":1622,"date":1264,"chapterOrder":1623,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用库学习","2100",{"path":1625,"stem":1626,"title":1627,"date":1264,"chapterOrder":1628,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets与构建安装","2200-0100",{"path":1630,"stem":1631,"title":1632,"date":1264,"chapterOrder":1633,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","顶层CMake与公共编译选项","2200-0200",{"path":1635,"stem":1636,"title":1637,"date":1264,"chapterOrder":1638,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src与lib模块CMake详解","2200-0300",{"path":1640,"stem":1641,"title":1642,"date":1264,"chapterOrder":1643,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方库依赖写法","2200-0400",{"path":1645,"stem":1646,"title":1647,"date":1264,"chapterOrder":1648,"chapterDepth":212,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板扩展与常见问题","2200-0500",{"path":37,"stem":1650,"title":38,"date":1264,"chapterOrder":1651,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1270},"wiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","2200",{"path":1266,"stem":1653,"title":1654,"date":1264,"chapterOrder":1655,"chapterDepth":1262,"docKey":1265,"docRoot":1266,"docTitle":1267,"isWikiDoc":1269,"isWikiIndex":1269},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",null,1784505232596]