[{"data":1,"prerenderedAt":3613},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang":3191,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang":3597,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang":3612},{"id":4,"title":5,"body":6,"canonicalPath":3171,"chapterDepth":40,"chapterOrder":3172,"date":3173,"description":3174,"docI18nKey":3175,"docKey":3176,"docRoot":3177,"docTitle":3178,"extension":3179,"i18nKey":3180,"isBlogPost":3181,"isWikiDoc":3182,"isWikiIndex":3181,"layout":3183,"legacyPath":3183,"locale":3184,"localeSlug":3185,"meta":3186,"navigation":3182,"path":3171,"seo":3187,"sourcePath":3188,"sourceStem":3180,"stem":3189,"wikiDepth":40,"__hash__":3190},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装.md","CMakePresets and Build Installation",{"type":7,"value":8,"toc":3121},"minimark",[9,21,27,430,435,441,456,462,465,512,515,535,541,588,591,593,596,599,626,633,656,659,665,670,673,690,693,714,719,733,736,738,794,813,816,831,834,846,852,867,870,872,923,926,931,946,949,952,994,997,1009,1015,1031,1034,1040,1055,1058,1060,1103,1106,1149,1152,1166,1172,1180,1183,1189,1236,1245,1248,1263,1266,1282,1286,1292,1304,1313,1315,1371,1374,1424,1430,1445,1449,1451,1485,1494,1497,1509,1516,1522,1525,1528,1534,1537,1540,1552,1555,1561,1572,1575,1589,1596,1621,1624,1630,1639,1645,1657,1663,1669,1675,1682,1685,1689,1692,1698,1701,1707,1710,1716,1719,1750,1756,1768,1774,1778,1781,1801,1804,1818,1828,1834,1848,1851,1853,1905,1908,1911,1920,1925,1930,1933,1947,1950,2023,2028,2040,2043,2046,2069,2075,2089,2092,2094,2124,2132,2136,2139,2144,2147,2162,2167,2170,2185,2190,2193,2249,2254,2257,2295,2298,2303,2306,2324,2327,2332,2335,2350,2353,2361,2364,2380,2383,2397,2400,2404,2409,2412,2416,2423,2426,2430,2433,2445,2448,2458,2465,2468,2474,2477,2482,2488,2492,2494,2508,2511,2516,2522,2527,2533,2536,2542,2548,2552,2554,2563,2565,2577,2582,2587,2590,2595,2605,2619,2624,2628,2630,2642,2649,2655,2660,2666,2678,2684,2690,2693,2698,2701,2705,2798,2805,2809,2812,2815,2821,2827,2834,2840,2876,2881,2888,2927,2931,2934,2953,2956,2972,2976,2980,2983,2989,2992,3008,3011,3026,3030,3033,3047,3053,3056,3068,3072,3075,3089,3092,3095,3117],[10,11,12,16,17,20],"p",{},[13,14,15],"code",{},"CMakePresets.json"," is used to save common CMake configurations. It solves the problem of having to manually write long series of ",[13,18,19],{},"cmake -S ... -B ... -G ... -D..."," commands every time.",[10,22,23,24,26],{},"The ",[13,25,15],{}," of this template is as follows:",[28,29,34],"pre",{"className":30,"code":31,"language":32,"meta":33,"style":33},"language-json shiki shiki-themes github-light github-dark","{\n  \"version\": 6,\n  \"cmakeMinimumRequired\": {\n    \"major\": 3,\n    \"minor\": 25,\n    \"patch\": 0\n  },\n  \"configurePresets\": [\n    {\n      \"name\": \"linux-debug\",\n      \"displayName\": \"Linux Debug\",\n      \"generator\": \"Ninja\",\n      \"binaryDir\": \"${sourceDir}\u002Fbuild\u002Flinux-debug\",\n      \"cacheVariables\": {\n        \"CMAKE_BUILD_TYPE\": \"Debug\",\n        \"CMAKE_EXPORT_COMPILE_COMMANDS\": \"ON\",\n        \"CMAKE_INSTALL_PREFIX\": \"${sourceDir}\u002Finstall\u002Flinux-debug\"\n      }\n    },\n    {\n      \"name\": \"linux-release\",\n      \"displayName\": \"Linux Release\",\n      \"generator\": \"Ninja\",\n      \"binaryDir\": \"${sourceDir}\u002Fbuild\u002Flinux-release\",\n      \"cacheVariables\": {\n        \"CMAKE_BUILD_TYPE\": \"Release\",\n        \"CMAKE_EXPORT_COMPILE_COMMANDS\": \"ON\",\n        \"CMAKE_INSTALL_PREFIX\": \"${sourceDir}\u002Finstall\u002Flinux-release\"\n      }\n    }\n  ],\n  \"buildPresets\": [\n    {\n      \"name\": \"linux-debug\",\n      \"configurePreset\": \"linux-debug\"\n    },\n    {\n      \"name\": \"linux-release\",\n      \"configurePreset\": \"linux-release\"\n    }\n  ]\n}\n","json","",[13,35,36,45,61,70,83,96,107,113,122,128,142,155,168,181,189,202,215,226,232,238,243,255,267,278,290,297,309,320,330,335,341,347,355,360,371,382,387,392,403,413,418,424],{"__ignoreMap":33},[37,38,41],"span",{"class":39,"line":40},"line",1,[37,42,44],{"class":43},"sVt8B","{\n",[37,46,48,52,55,58],{"class":39,"line":47},2,[37,49,51],{"class":50},"sj4cs","  \"version\"",[37,53,54],{"class":43},": ",[37,56,57],{"class":50},"6",[37,59,60],{"class":43},",\n",[37,62,64,67],{"class":39,"line":63},3,[37,65,66],{"class":50},"  \"cmakeMinimumRequired\"",[37,68,69],{"class":43},": {\n",[37,71,73,76,78,81],{"class":39,"line":72},4,[37,74,75],{"class":50},"    \"major\"",[37,77,54],{"class":43},[37,79,80],{"class":50},"3",[37,82,60],{"class":43},[37,84,86,89,91,94],{"class":39,"line":85},5,[37,87,88],{"class":50},"    \"minor\"",[37,90,54],{"class":43},[37,92,93],{"class":50},"25",[37,95,60],{"class":43},[37,97,99,102,104],{"class":39,"line":98},6,[37,100,101],{"class":50},"    \"patch\"",[37,103,54],{"class":43},[37,105,106],{"class":50},"0\n",[37,108,110],{"class":39,"line":109},7,[37,111,112],{"class":43},"  },\n",[37,114,116,119],{"class":39,"line":115},8,[37,117,118],{"class":50},"  \"configurePresets\"",[37,120,121],{"class":43},": [\n",[37,123,125],{"class":39,"line":124},9,[37,126,127],{"class":43},"    {\n",[37,129,131,134,136,140],{"class":39,"line":130},10,[37,132,133],{"class":50},"      \"name\"",[37,135,54],{"class":43},[37,137,139],{"class":138},"sZZnC","\"linux-debug\"",[37,141,60],{"class":43},[37,143,145,148,150,153],{"class":39,"line":144},11,[37,146,147],{"class":50},"      \"displayName\"",[37,149,54],{"class":43},[37,151,152],{"class":138},"\"Linux Debug\"",[37,154,60],{"class":43},[37,156,158,161,163,166],{"class":39,"line":157},12,[37,159,160],{"class":50},"      \"generator\"",[37,162,54],{"class":43},[37,164,165],{"class":138},"\"Ninja\"",[37,167,60],{"class":43},[37,169,171,174,176,179],{"class":39,"line":170},13,[37,172,173],{"class":50},"      \"binaryDir\"",[37,175,54],{"class":43},[37,177,178],{"class":138},"\"${sourceDir}\u002Fbuild\u002Flinux-debug\"",[37,180,60],{"class":43},[37,182,184,187],{"class":39,"line":183},14,[37,185,186],{"class":50},"      \"cacheVariables\"",[37,188,69],{"class":43},[37,190,192,195,197,200],{"class":39,"line":191},15,[37,193,194],{"class":50},"        \"CMAKE_BUILD_TYPE\"",[37,196,54],{"class":43},[37,198,199],{"class":138},"\"Debug\"",[37,201,60],{"class":43},[37,203,205,208,210,213],{"class":39,"line":204},16,[37,206,207],{"class":50},"        \"CMAKE_EXPORT_COMPILE_COMMANDS\"",[37,209,54],{"class":43},[37,211,212],{"class":138},"\"ON\"",[37,214,60],{"class":43},[37,216,218,221,223],{"class":39,"line":217},17,[37,219,220],{"class":50},"        \"CMAKE_INSTALL_PREFIX\"",[37,222,54],{"class":43},[37,224,225],{"class":138},"\"${sourceDir}\u002Finstall\u002Flinux-debug\"\n",[37,227,229],{"class":39,"line":228},18,[37,230,231],{"class":43},"      }\n",[37,233,235],{"class":39,"line":234},19,[37,236,237],{"class":43},"    },\n",[37,239,241],{"class":39,"line":240},20,[37,242,127],{"class":43},[37,244,246,248,250,253],{"class":39,"line":245},21,[37,247,133],{"class":50},[37,249,54],{"class":43},[37,251,252],{"class":138},"\"linux-release\"",[37,254,60],{"class":43},[37,256,258,260,262,265],{"class":39,"line":257},22,[37,259,147],{"class":50},[37,261,54],{"class":43},[37,263,264],{"class":138},"\"Linux Release\"",[37,266,60],{"class":43},[37,268,270,272,274,276],{"class":39,"line":269},23,[37,271,160],{"class":50},[37,273,54],{"class":43},[37,275,165],{"class":138},[37,277,60],{"class":43},[37,279,281,283,285,288],{"class":39,"line":280},24,[37,282,173],{"class":50},[37,284,54],{"class":43},[37,286,287],{"class":138},"\"${sourceDir}\u002Fbuild\u002Flinux-release\"",[37,289,60],{"class":43},[37,291,293,295],{"class":39,"line":292},25,[37,294,186],{"class":50},[37,296,69],{"class":43},[37,298,300,302,304,307],{"class":39,"line":299},26,[37,301,194],{"class":50},[37,303,54],{"class":43},[37,305,306],{"class":138},"\"Release\"",[37,308,60],{"class":43},[37,310,312,314,316,318],{"class":39,"line":311},27,[37,313,207],{"class":50},[37,315,54],{"class":43},[37,317,212],{"class":138},[37,319,60],{"class":43},[37,321,323,325,327],{"class":39,"line":322},28,[37,324,220],{"class":50},[37,326,54],{"class":43},[37,328,329],{"class":138},"\"${sourceDir}\u002Finstall\u002Flinux-release\"\n",[37,331,333],{"class":39,"line":332},29,[37,334,231],{"class":43},[37,336,338],{"class":39,"line":337},30,[37,339,340],{"class":43},"    }\n",[37,342,344],{"class":39,"line":343},31,[37,345,346],{"class":43},"  ],\n",[37,348,350,353],{"class":39,"line":349},32,[37,351,352],{"class":50},"  \"buildPresets\"",[37,354,121],{"class":43},[37,356,358],{"class":39,"line":357},33,[37,359,127],{"class":43},[37,361,363,365,367,369],{"class":39,"line":362},34,[37,364,133],{"class":50},[37,366,54],{"class":43},[37,368,139],{"class":138},[37,370,60],{"class":43},[37,372,374,377,379],{"class":39,"line":373},35,[37,375,376],{"class":50},"      \"configurePreset\"",[37,378,54],{"class":43},[37,380,381],{"class":138},"\"linux-debug\"\n",[37,383,385],{"class":39,"line":384},36,[37,386,237],{"class":43},[37,388,390],{"class":39,"line":389},37,[37,391,127],{"class":43},[37,393,395,397,399,401],{"class":39,"line":394},38,[37,396,133],{"class":50},[37,398,54],{"class":43},[37,400,252],{"class":138},[37,402,60],{"class":43},[37,404,406,408,410],{"class":39,"line":405},39,[37,407,376],{"class":50},[37,409,54],{"class":43},[37,411,412],{"class":138},"\"linux-release\"\n",[37,414,416],{"class":39,"line":415},40,[37,417,340],{"class":43},[37,419,421],{"class":39,"line":420},41,[37,422,423],{"class":43},"  ]\n",[37,425,427],{"class":39,"line":426},42,[37,428,429],{"class":43},"}\n",[431,432,434],"h2",{"id":433},"root-field","root field",[436,437,439],"h3",{"id":438},"version",[13,440,438],{},[28,442,444],{"className":30,"code":443,"language":32,"meta":33,"style":33},"\"version\": 6\n",[13,445,446],{"__ignoreMap":33},[37,447,448,451,453],{"class":39,"line":40},[37,449,450],{"class":138},"\"version\"",[37,452,54],{"class":43},[37,454,455],{"class":50},"6\n",[10,457,458,459,461],{},"Indicates the ",[13,460,15],{}," file format version, not the project version.",[10,463,464],{},"What can be filled in:",[466,467,468,482],"table",{},[469,470,471],"thead",{},[472,473,474,479],"tr",{},[475,476,478],"th",{"align":477},"left","value",[475,480,481],{"align":477},"Meaning",[483,484,485,503],"tbody",{},[472,486,487,500],{},[488,489,490,493,494,493,497,499],"td",{"align":477},[13,491,492],{},"1","、",[13,495,496],{},"2",[13,498,80],{},"、...",[488,501,502],{"align":477},"CMake preset file format version",[472,504,505,509],{},[488,506,507],{"align":477},[13,508,57],{},[488,510,511],{"align":477},"The version used in this template is designed for CMake 3.25 and above.",[10,513,514],{},"Note:",[516,517,518,526,532],"ol",{},[519,520,521,522,525],"li",{},"This is not the version number of ",[13,523,524],{},"cmake_template",".",[519,527,528,529,531],{},"If you want to maintain compatibility with older CMake, you may need to lower the ",[13,530,438],{},", but some fields may no longer be usable.",[519,533,534],{},"If your local CMake is very new, you don't necessarily need to use the highest preset version; just enough is fine.",[436,536,538],{"id":537},"cmakeminimumrequired",[13,539,540],{},"cmakeMinimumRequired",[28,542,544],{"className":30,"code":543,"language":32,"meta":33,"style":33},"\"cmakeMinimumRequired\": {\n  \"major\": 3,\n  \"minor\": 25,\n  \"patch\": 0\n}\n",[13,545,546,553,564,575,584],{"__ignoreMap":33},[37,547,548,551],{"class":39,"line":40},[37,549,550],{"class":138},"\"cmakeMinimumRequired\"",[37,552,69],{"class":43},[37,554,555,558,560,562],{"class":39,"line":47},[37,556,557],{"class":50},"  \"major\"",[37,559,54],{"class":43},[37,561,80],{"class":50},[37,563,60],{"class":43},[37,565,566,569,571,573],{"class":39,"line":63},[37,567,568],{"class":50},"  \"minor\"",[37,570,54],{"class":43},[37,572,93],{"class":50},[37,574,60],{"class":43},[37,576,577,580,582],{"class":39,"line":72},[37,578,579],{"class":50},"  \"patch\"",[37,581,54],{"class":43},[37,583,106],{"class":50},[37,585,586],{"class":39,"line":85},[37,587,429],{"class":43},[10,589,590],{},"Indicates the minimum CMake version required to read this preset file.",[10,592,464],{},[10,594,595],{},"|field|Here is the translation of the provided Simplified Chinese Markdown fragment into natural American English, following all specified rules.",[597,598],"hr",{},[10,600,601,605,606,609,610,612,613,609,616,618,619,609,622,625],{},[602,603,604],"strong",{},"Example","|Meaning|\n|:---|:---|:---|\n|",[13,607,608],{},"major","|",[13,611,80],{},"|Major Version Number|\n|",[13,614,615],{},"minor",[13,617,93],{},"|Minor version number|\n|",[13,620,621],{},"patch",[13,623,624],{},"0","|patch version number|",[10,627,628,629,632],{},"This template requires CMake >= 3.25, because the top-level ",[13,630,631],{},"CMakeLists.txt"," also specifies:",[28,634,638],{"className":635,"code":636,"language":637,"meta":33,"style":33},"language-cmake shiki shiki-themes github-light github-dark","cmake_minimum_required(VERSION 3.25)\n","cmake",[13,639,640],{"__ignoreMap":33},[37,641,642,646,649,653],{"class":39,"line":40},[37,643,645],{"class":644},"szBVR","cmake_minimum_required",[37,647,648],{"class":43},"(",[37,650,652],{"class":651},"sScJk","VERSION",[37,654,655],{"class":43}," 3.25)\n",[10,657,658],{},"It's best to keep them consistent.",[431,660,662],{"id":661},"configurepresets",[13,663,664],{},"configurePresets",[10,666,667,669],{},[13,668,664],{}," is a preset for the configuration phase.",[10,671,672],{},"Corresponding commands for the configuration phase:",[28,674,678],{"className":675,"code":676,"language":677,"meta":33,"style":33},"language-bash shiki shiki-themes github-light github-dark","cmake --preset linux-debug\n","bash",[13,679,680],{"__ignoreMap":33},[37,681,682,684,687],{"class":39,"line":40},[37,683,637],{"class":651},[37,685,686],{"class":50}," --preset",[37,688,689],{"class":138}," linux-debug\n",[10,691,692],{},"It is equivalent to telling CMake:",[516,694,695,698,701,704,707],{},[519,696,697],{},"Which generator to use?",[519,699,700],{},"Where is the build directory located?",[519,702,703],{},"What is the build type.",[519,705,706],{},"Where is the installation directory?",[519,708,709,710,713],{},"Should ",[13,711,712],{},"compile_commands.json"," be generated?",[436,715,717],{"id":716},"name",[13,718,716],{},[28,720,722],{"className":30,"code":721,"language":32,"meta":33,"style":33},"\"name\": \"linux-debug\"\n",[13,723,724],{"__ignoreMap":33},[37,725,726,729,731],{"class":39,"line":40},[37,727,728],{"class":138},"\"name\"",[37,730,54],{"class":43},[37,732,381],{"class":138},[10,734,735],{},"machine-readable name of a preset.",[10,737,464],{},[466,739,740,750],{},[469,741,742],{},[472,743,744,747],{},[475,745,746],{"align":477},"writing method",[475,748,749],{"align":477},"Explanation",[483,751,752,762,772,784],{},[472,753,754,759],{},[488,755,756],{"align":477},[13,757,758],{},"linux-debug",[488,760,761],{"align":477},"This template's Debug preset",[472,763,764,769],{},[488,765,766],{"align":477},[13,767,768],{},"linux-release",[488,770,771],{"align":477},"Release preset for this template",[472,773,774,779],{},[488,775,776],{"align":477},[13,777,778],{},"debug",[488,780,781,782,525],{"align":477},"That works too, but it's not as clear as ",[13,783,758],{},[472,785,786,791],{},[488,787,788],{"align":477},[13,789,790],{},"gcc-debug",[488,792,793],{"align":477},"If you want to differentiate compilers, here’s how you can name them:",[795,796,797,800,803,806],"ul",{},[519,798,799],{},"By platform: GCC, Clang, MSVC (Microsoft Visual C++)",[519,801,802],{},"By language: GCC (GNU Compiler Collection), Swift (for Swift), Javac (for Java)",[519,804,805],{},"By function or origin: LLVM, Go compiler (gc), Rustc (for Rust)",[519,807,808,809,812],{},"By version or variant: GCC 9, Clang 11, MSVC 2019|\n|",[13,810,811],{},"clang-debug","|If we add a Clang preset, we could name it like this.|",[10,814,815],{},"Requirements:",[516,817,818,821,828],{},[519,819,820],{},"You can't have duplicates in the same array.",[519,822,823,824,827],{},"The names in ",[13,825,826],{},"buildPresets"," should reference the names here.",[519,829,830],{},"This is the name used by the command line.",[10,832,833],{},"Example:",[28,835,836],{"className":675,"code":676,"language":677,"meta":33,"style":33},[13,837,838],{"__ignoreMap":33},[37,839,840,842,844],{"class":39,"line":40},[37,841,637],{"class":651},[37,843,686],{"class":50},[37,845,689],{"class":138},[436,847,849],{"id":848},"displayname",[13,850,851],{},"displayName",[28,853,855],{"className":30,"code":854,"language":32,"meta":33,"style":33},"\"displayName\": \"Linux Debug\"\n",[13,856,857],{"__ignoreMap":33},[37,858,859,862,864],{"class":39,"line":40},[37,860,861],{"class":138},"\"displayName\"",[37,863,54],{"class":43},[37,865,866],{"class":138},"\"Linux Debug\"\n",[10,868,869],{},"A human-readable name, primarily used for IDE display, such as the preset list in VSCode CMake Tools.",[10,871,464],{},[466,873,874,882],{},[469,875,876],{},[472,877,878,880],{},[475,879,746],{"align":477},[475,881,749],{"align":477},[483,883,884,894,903,913],{},[472,885,886,891],{},[488,887,888],{"align":477},[13,889,890],{},"Linux Debug",[488,892,893],{"align":477},"Clear",[472,895,896,901],{},[488,897,898],{"align":477},[13,899,900],{},"Linux Release",[488,902,893],{"align":477},[472,904,905,910],{},[488,906,907],{"align":477},[13,908,909],{},"Debug",[488,911,912],{"align":477},"Okay, but without platform distinction",[472,914,915,920],{},[488,916,917],{"align":477},[13,918,919],{},"Fedora GCC Debug",[488,921,922],{"align":477},"If there are many presets, you can be more specific.",[10,924,925],{},"This field does not affect the actual build logic.",[436,927,929],{"id":928},"generator",[13,930,928],{},[28,932,934],{"className":30,"code":933,"language":32,"meta":33,"style":33},"\"generator\": \"Ninja\"\n",[13,935,936],{"__ignoreMap":33},[37,937,938,941,943],{"class":39,"line":40},[37,939,940],{"class":138},"\"generator\"",[37,942,54],{"class":43},[37,944,945],{"class":138},"\"Ninja\"\n",[10,947,948],{},"Specify what build system files CMake should generate.",[10,950,951],{},"Common Selectable Values for Linux:",[466,953,954,962],{},[469,955,956],{},[472,957,958,960],{},[475,959,478],{"align":477},[475,961,749],{"align":477},[483,963,964,974,984],{},[472,965,966,971],{},[488,967,968],{"align":477},[13,969,970],{},"Ninja",[488,972,973],{"align":477},"Recommended, fast, clean output, and well-suited for VSCode CMake Tools.",[472,975,976,981],{},[488,977,978],{"align":477},[13,979,980],{},"Unix Makefiles",[488,982,983],{"align":477},"Traditional Makefile workflow",[472,985,986,991],{},[488,987,988],{"align":477},[13,989,990],{},"Ninja Multi-Config",[488,992,993],{"align":477},"Configure Ninja for multiple configurations, allowing simultaneous management of Debug and Release builds.",[10,995,996],{},"This template only supports Linux and uses Ninja, so it is hardcoded as follows:",[28,998,999],{"className":30,"code":933,"language":32,"meta":33,"style":33},[13,1000,1001],{"__ignoreMap":33},[37,1002,1003,1005,1007],{"class":39,"line":40},[37,1004,940],{"class":138},[37,1006,54],{"class":43},[37,1008,945],{"class":138},[10,1010,1011,1012,1014],{},"If using ",[13,1013,980],{},", the build command still works:",[28,1016,1018],{"className":675,"code":1017,"language":677,"meta":33,"style":33},"cmake --build --preset linux-debug\n",[13,1019,1020],{"__ignoreMap":33},[37,1021,1022,1024,1027,1029],{"class":39,"line":40},[37,1023,637],{"class":651},[37,1025,1026],{"class":50}," --build",[37,1028,686],{"class":50},[37,1030,689],{"class":138},[10,1032,1033],{},"But the underlying layer is not Ninja.",[436,1035,1037],{"id":1036},"binarydir",[13,1038,1039],{},"binaryDir",[28,1041,1043],{"className":30,"code":1042,"language":32,"meta":33,"style":33},"\"binaryDir\": \"${sourceDir}\u002Fbuild\u002Flinux-debug\"\n",[13,1044,1045],{"__ignoreMap":33},[37,1046,1047,1050,1052],{"class":39,"line":40},[37,1048,1049],{"class":138},"\"binaryDir\"",[37,1051,54],{"class":43},[37,1053,1054],{"class":138},"\"${sourceDir}\u002Fbuild\u002Flinux-debug\"\n",[10,1056,1057],{},"Specify the build directory.",[10,1059,464],{},[466,1061,1062,1070],{},[469,1063,1064],{},[472,1065,1066,1068],{},[475,1067,746],{"align":477},[475,1069,749],{"align":477},[483,1071,1072,1082,1093],{},[472,1073,1074,1079],{},[488,1075,1076],{"align":477},[13,1077,1078],{},"${sourceDir}\u002Fbuild\u002Flinux-debug",[488,1080,1081],{"align":477},"Recommend, keeping build artifacts in the project's build subdirectory.",[472,1083,1084,1089],{},[488,1085,1086],{"align":477},[13,1087,1088],{},"${sourceDir}\u002Fbuild\u002Fdebug",[488,1090,781,1091,525],{"align":477},[13,1092,758],{},[472,1094,1095,1100],{},[488,1096,1097],{"align":477},[13,1098,1099],{},"\u002Ftmp\u002Fmy-build",[488,1101,1102],{"align":477},"It can be placed outside the project, but it is not suitable as a template default value.",[10,1104,1105],{},"Common Macros:",[466,1107,1108,1117],{},[469,1109,1110],{},[472,1111,1112,1115],{},[475,1113,1114],{"align":477},"macro",[475,1116,481],{"align":477},[483,1118,1119,1129,1139],{},[472,1120,1121,1126],{},[488,1122,1123],{"align":477},[13,1124,1125],{},"${sourceDir}",[488,1127,1128],{"align":477},"Project source code root directory",[472,1130,1131,1136],{},[488,1132,1133],{"align":477},[13,1134,1135],{},"${presetName}",[488,1137,1138],{"align":477},"Current preset name",[472,1140,1141,1146],{},[488,1142,1143],{"align":477},[13,1144,1145],{},"${sourceParentDir}",[488,1147,1148],{"align":477},"the parent directory of the root source directory",[10,1150,1151],{},"It can also be written as:",[28,1153,1155],{"className":30,"code":1154,"language":32,"meta":33,"style":33},"\"binaryDir\": \"${sourceDir}\u002Fbuild\u002F${presetName}\"\n",[13,1156,1157],{"__ignoreMap":33},[37,1158,1159,1161,1163],{"class":39,"line":40},[37,1160,1049],{"class":138},[37,1162,54],{"class":43},[37,1164,1165],{"class":138},"\"${sourceDir}\u002Fbuild\u002F${presetName}\"\n",[10,1167,1168,1169,1171],{},"This way, ",[13,1170,758],{}," will be automatically generated to:",[28,1173,1178],{"className":1174,"code":1176,"language":1177,"meta":33},[1175],"language-text","build\u002Flinux-debug\n","text",[13,1179,1176],{"__ignoreMap":33},[10,1181,1182],{},"This template explicitly outlines the table of contents to make it more intuitive when starting out.",[436,1184,1186],{"id":1185},"cachevariables",[13,1187,1188],{},"cacheVariables",[28,1190,1192],{"className":30,"code":1191,"language":32,"meta":33,"style":33},"\"cacheVariables\": {\n  \"CMAKE_BUILD_TYPE\": \"Debug\",\n  \"CMAKE_EXPORT_COMPILE_COMMANDS\": \"ON\",\n  \"CMAKE_INSTALL_PREFIX\": \"${sourceDir}\u002Finstall\u002Flinux-debug\"\n}\n",[13,1193,1194,1201,1212,1223,1232],{"__ignoreMap":33},[37,1195,1196,1199],{"class":39,"line":40},[37,1197,1198],{"class":138},"\"cacheVariables\"",[37,1200,69],{"class":43},[37,1202,1203,1206,1208,1210],{"class":39,"line":47},[37,1204,1205],{"class":50},"  \"CMAKE_BUILD_TYPE\"",[37,1207,54],{"class":43},[37,1209,199],{"class":138},[37,1211,60],{"class":43},[37,1213,1214,1217,1219,1221],{"class":39,"line":63},[37,1215,1216],{"class":50},"  \"CMAKE_EXPORT_COMPILE_COMMANDS\"",[37,1218,54],{"class":43},[37,1220,212],{"class":138},[37,1222,60],{"class":43},[37,1224,1225,1228,1230],{"class":39,"line":72},[37,1226,1227],{"class":50},"  \"CMAKE_INSTALL_PREFIX\"",[37,1229,54],{"class":43},[37,1231,225],{"class":138},[37,1233,1234],{"class":39,"line":85},[37,1235,429],{"class":43},[10,1237,1238,1240,1241,1244],{},[13,1239,1188],{}," is equivalent to the ",[13,1242,1243],{},"-D"," parameter in the command line.",[10,1246,1247],{},"For example:",[28,1249,1251],{"className":30,"code":1250,"language":32,"meta":33,"style":33},"\"CMAKE_BUILD_TYPE\": \"Debug\"\n",[13,1252,1253],{"__ignoreMap":33},[37,1254,1255,1258,1260],{"class":39,"line":40},[37,1256,1257],{"class":138},"\"CMAKE_BUILD_TYPE\"",[37,1259,54],{"class":43},[37,1261,1262],{"class":138},"\"Debug\"\n",[10,1264,1265],{},"Equivalent to:",[28,1267,1269],{"className":675,"code":1268,"language":677,"meta":33,"style":33},"-DCMAKE_BUILD_TYPE=Debug\n",[13,1270,1271],{"__ignoreMap":33},[37,1272,1273,1276,1279],{"class":39,"line":40},[37,1274,1275],{"class":43},"-DCMAKE_BUILD_TYPE",[37,1277,1278],{"class":644},"=",[37,1280,1281],{"class":138},"Debug\n",[431,1283,1285],{"id":1284},"frequently-used-cache-variables","Frequently used cache variables",[436,1287,1289],{"id":1288},"cmake_build_type",[13,1290,1291],{},"CMAKE_BUILD_TYPE",[28,1293,1294],{"className":30,"code":1250,"language":32,"meta":33,"style":33},[13,1295,1296],{"__ignoreMap":33},[37,1297,1298,1300,1302],{"class":39,"line":40},[37,1299,1257],{"class":138},[37,1301,54],{"class":43},[37,1303,1262],{"class":138},[10,1305,1306,1307,1309,1310,1312],{},"Build types used in mono-configuration generators. Both ",[13,1308,970],{}," and ",[13,1311,980],{}," are common mono-configuration generators.",[10,1314,464],{},[466,1316,1317,1326],{},[469,1318,1319],{},[472,1320,1321,1323],{},[475,1322,478],{"align":477},[475,1324,1325],{"align":477},"effect",[483,1327,1328,1341,1351,1361],{},[472,1329,1330,1334],{},[488,1331,1332],{"align":477},[13,1333,909],{},[488,1335,1336,1337,1340],{"align":477},"Debug builds, typically with ",[13,1338,1339],{},"-g",", minimal optimization",[472,1342,1343,1348],{},[488,1344,1345],{"align":477},[13,1346,1347],{},"Release",[488,1349,1350],{"align":477},"Release builds are typically done with optimization enabled.",[472,1352,1353,1358],{},[488,1354,1355],{"align":477},[13,1356,1357],{},"RelWithDebInfo",[488,1359,1360],{"align":477},"Optimization + Debug Information",[472,1362,1363,1368],{},[488,1364,1365],{"align":477},[13,1366,1367],{},"MinSizeRel",[488,1369,1370],{"align":477},"optimize volume",[10,1372,1373],{},"Common choices:",[466,1375,1376,1386],{},[469,1377,1378],{},[472,1379,1380,1383],{},[475,1381,1382],{"align":477},"Scene",[475,1384,1385],{"align":477},"Recommendation",[483,1387,1388,1397,1406,1415],{},[472,1389,1390,1393],{},[488,1391,1392],{"align":477},"Write code, debug breakpoints.",[488,1394,1395],{"align":477},[13,1396,909],{},[472,1398,1399,1402],{},[488,1400,1401],{"align":477},"Release, Performance Test",[488,1403,1404],{"align":477},[13,1405,1347],{},[472,1407,1408,1411],{},[488,1409,1410],{"align":477},"Performance testing but still want to retain symbols.",[488,1412,1413],{"align":477},[13,1414,1357],{},[472,1416,1417,1420],{},[488,1418,1419],{"align":477},"Embedded or size-sensitive",[488,1421,1422],{"align":477},[13,1423,1367],{},[436,1425,1427],{"id":1426},"cmake_export_compile_commands",[13,1428,1429],{},"CMAKE_EXPORT_COMPILE_COMMANDS",[28,1431,1433],{"className":30,"code":1432,"language":32,"meta":33,"style":33},"\"CMAKE_EXPORT_COMPILE_COMMANDS\": \"ON\"\n",[13,1434,1435],{"__ignoreMap":33},[37,1436,1437,1440,1442],{"class":39,"line":40},[37,1438,1439],{"class":138},"\"CMAKE_EXPORT_COMPILE_COMMANDS\"",[37,1441,54],{"class":43},[37,1443,1444],{"class":138},"\"ON\"\n",[10,1446,709,1447,713],{},[13,1448,712],{},[10,1450,464],{},[466,1452,1453,1461],{},[469,1454,1455],{},[472,1456,1457,1459],{},[475,1458,478],{"align":477},[475,1460,1325],{"align":477},[483,1462,1463,1475],{},[472,1464,1465,1470],{},[488,1466,1467],{"align":477},[13,1468,1469],{},"ON",[488,1471,1472,1473],{"align":477},"Generate ",[13,1474,712],{},[472,1476,1477,1482],{},[488,1478,1479],{"align":477},[13,1480,1481],{},"OFF",[488,1483,1484],{"align":477},"Do not generate",[10,1486,1487,1489,1490,1493],{},[13,1488,712],{}," Record the actual compilation command for each source file. ",[13,1491,1492],{},"clangd",", VSCode, and many static analysis tools use it to obtain information such as include paths, macro definitions, and compilation standards.",[10,1495,1496],{},"Recommend fixed enable in template:",[28,1498,1499],{"className":30,"code":1432,"language":32,"meta":33,"style":33},[13,1500,1501],{"__ignoreMap":33},[37,1502,1503,1505,1507],{"class":39,"line":40},[37,1504,1439],{"class":138},[37,1506,54],{"class":43},[37,1508,1444],{"class":138},[1510,1511,1513,1514],"h4",{"id":1512},"make-clangd-find-compile_commandsjson","Make clangd find ",[13,1515,712],{},[10,1517,1518,1519,1521],{},"merely generating ",[13,1520,712],{}," does not necessarily mean clangd can automatically find it.",[10,1523,1524],{},"Before using this method in VSCode, you need to install the official LLVM clangd extension.\nCMake Tools is responsible for configuring, building, and selecting targets, while clangd handles code completion,\nJump-to-definition and semantic checks, among other editing features, are not part of the same extension.",[10,1526,1527],{},"This template sets the Debug build directory to:",[28,1529,1532],{"className":1530,"code":1531,"language":1177,"meta":33},[1175],"build\u002Flinux-debug\u002F\n",[13,1533,1531],{"__ignoreMap":33},[10,1535,1536],{},"Therefore, execute:",[10,1538,1539],{},"It looks like your message is incomplete or unclear. Could you please provide more details or specify what you'd like me to help you with?",[28,1541,1542],{"className":675,"code":676,"language":677,"meta":33,"style":33},[13,1543,1544],{"__ignoreMap":33},[37,1545,1546,1548,1550],{"class":39,"line":40},[37,1547,637],{"class":651},[37,1549,686],{"class":50},[37,1551,689],{"class":138},[10,1553,1554],{},"Afterwards, the compilation database is located at:",[28,1556,1559],{"className":1557,"code":1558,"language":1177,"meta":33},[1175],"build\u002Flinux-debug\u002Fcompile_commands.json\n",[13,1560,1558],{"__ignoreMap":33},[10,1562,1563,1564,1567,1568,1571],{},"Clangd will by default traverse upward from the directory where the source file is located.\nIt usually can locate the project root directory or the ",[13,1565,1566],{},"build\u002F"," direct parent directory.\ndatabases, but might not continue searching for multi-layered ones like ",[13,1569,1570],{},"build\u002Flinux-debug\u002F",".\npreset directory.",[10,1573,1574],{},"If clangd doesn't find a database, it enters fallback mode, using only a small number of default settings.\nParameter analysis source files. At this point, even if CMake compiles without issues, the following message may still appear in VSCode:",[516,1576,1577,1580,1583,1586],{},[519,1578,1579],{},"Project header file not found.",[519,1581,1582],{},"Eigen、OpenCV 等第三方库显示找不到。",[519,1584,1585],{},"C++ standard recognition errors, such as a project using C++23 while clangd analyzes it according to C++17.",[519,1587,1588],{},"The jump-to-definition, auto-completion, and error suggestions are inaccurate.",[10,1590,1591,1592,1595],{},"It is recommended to create ",[13,1593,1594],{},".clangd"," at the project root directory:",[28,1597,1601],{"className":1598,"code":1599,"language":1600,"meta":33,"style":33},"language-yaml shiki shiki-themes github-light github-dark","CompileFlags:\n  CompilationDatabase: build\u002Flinux-debug\n","yaml",[13,1602,1603,1612],{"__ignoreMap":33},[37,1604,1605,1609],{"class":39,"line":40},[37,1606,1608],{"class":1607},"s9eBZ","CompileFlags",[37,1610,1611],{"class":43},":\n",[37,1613,1614,1617,1619],{"class":39,"line":47},[37,1615,1616],{"class":1607},"  CompilationDatabase",[37,1618,54],{"class":43},[37,1620,1176],{"class":138},[10,1622,1623],{},"The directory structure will become:",[28,1625,1628],{"className":1626,"code":1627,"language":1177,"meta":33},[1175],".\n├── .clangd\n├── CMakeLists.txt\n├── CMakePresets.json\n├── build\u002F\n│   └── linux-debug\u002F\n│       └── compile_commands.json\n└── src\u002F\n",[13,1629,1627],{"__ignoreMap":33},[10,1631,1632,1635,1636,1638],{},[13,1633,1634],{},"CompilationDatabase"," uses a path relative to the directory where ",[13,1637,1594],{}," is located, so do not\nWrite the absolute path to a specific file on the user's computer. This file stores only generic project configurations and can be committed to\nGit。",[10,1640,1641,1642,1644],{},"Note that ",[13,1643,1594],{}," does not generate a compilation database. This applies when using the project for the first time or when modifications have been made.\nAfter setting up the environment, configuring compilation options, dependencies, and presets, it is still necessary to re-execute:",[28,1646,1647],{"className":675,"code":676,"language":677,"meta":33,"style":33},[13,1648,1649],{"__ignoreMap":33},[37,1650,1651,1653,1655],{"class":39,"line":40},[37,1652,637],{"class":651},[37,1654,686],{"class":50},[37,1656,689],{"class":138},[10,1658,1659,1660,1662],{},"or in VSCode CMake Tools select ",[13,1661,758],{}," and click Configure.",[10,1664,1665,1666,1668],{},"If ",[13,1667,1594],{}," is created but not immediately effective, you can execute in the VSCode command palette:",[28,1670,1673],{"className":1671,"code":1672,"language":1177,"meta":33},[1175],"clangd: Restart language server\n",[13,1674,1672],{"__ignoreMap":33},[10,1676,1677,1678,1681],{},"You can also close and reopen the current ",[13,1679,1680],{},".cpp"," file.",[10,1683,1684],{},"If you have the Microsoft C\u002FC++ extension installed alongside the editor's built-in tools and are seeing two sets of duplicate errors, this is usually caused by conflicting IntelliSense or linting features. The editor’s default language service and the extension’s service are both analyzing the code simultaneously. To resolve this, you can disable the editor’s native IntelliSense or set the Microsoft extension to take priority. Check your settings (e.g., in VS Code, adjust \"C_Cpp.intelliSenseEngine\" and \"editor.suggest.selection\") to ensure only one tool is active. If the issue persists, look for other conflicting C\u002FC++ related extensions.\nYou can retain the GDB debugging functionality provided by this extension while turning off its IntelliSense.\nLet clangd be solely responsible for code analysis. This is a personal VSCode setting and does not need to be written into CMake.\nTemplate.",[1510,1686,1688],{"id":1687},"check-if-clangd-is-actually-working","Check if clangd is actually working",[10,1690,1691],{},"Open in VSCode:",[28,1693,1696],{"className":1694,"code":1695,"language":1177,"meta":33},[1175],"查看 -> 输出 -> clangd\n",[13,1697,1695],{"__ignoreMap":33},[10,1699,1700],{},"Under normal circumstances, you should see similar content:",[28,1702,1705],{"className":1703,"code":1704,"language":1177,"meta":33},[1175],"Loaded compilation database from ...\u002Fbuild\u002Flinux-debug\u002Fcompile_commands.json\nCompile command from CDB is: ...\n",[13,1706,1704],{"__ignoreMap":33},[10,1708,1709],{},"If you see:",[28,1711,1714],{"className":1712,"code":1713,"language":1177,"meta":33},[1175],"Failed to find compilation database\ncommand clangd fallback\n",[13,1715,1713],{"__ignoreMap":33},[10,1717,1718],{},"Explanation: clangd is still not reading the compilation database. Check the following in order:",[516,1720,1721,1724,1729,1736,1742],{},[519,1722,1723],{},"Check if the file explorer panel in VSCode shows your project's top-level files and folders. Alternatively, open a terminal within VSCode; the default path should be your project root.",[519,1725,1726,1728],{},[13,1727,1594],{}," is located in the project root directory.",[519,1730,1731,1732,1735],{},"Has ",[13,1733,1734],{},"cmake --preset linux-debug"," been executed?",[519,1737,1738,1741],{},[13,1739,1740],{},"build\u002Flinux-debug\u002Fcompile_commands.json"," is real or exists.",[519,1743,1744,1745,1747,1748,525],{},"Check if the directory name in ",[13,1746,1594],{}," is exactly the same as in ",[13,1749,1039],{},[10,1751,1752,1753,1755],{},"If you can directly use ",[13,1754,1492],{}," in the system terminal, you can also check individual source files:",[28,1757,1759],{"className":675,"code":1758,"language":677,"meta":33,"style":33},"clangd --check=src\u002Fmain.cpp\n",[13,1760,1761],{"__ignoreMap":33},[37,1762,1763,1765],{"class":39,"line":40},[37,1764,1492],{"class":651},[37,1766,1767],{"class":50}," --check=src\u002Fmain.cpp\n",[10,1769,1770,1771,1773],{},"The output should display that it has loaded ",[13,1772,1740],{},".\nand use the include paths, macro definitions, and C++ standards generated by CMake as well.",[1510,1775,1777],{"id":1776},"use-the-release-database","Use the release database",[10,1779,1780],{},"If you want clangd to analyze according to the Release configuration, you can change it to:",[28,1782,1784],{"className":1598,"code":1783,"language":1600,"meta":33,"style":33},"CompileFlags:\n  CompilationDatabase: build\u002Flinux-release\n",[13,1785,1786,1792],{"__ignoreMap":33},[37,1787,1788,1790],{"class":39,"line":40},[37,1789,1608],{"class":1607},[37,1791,1611],{"class":43},[37,1793,1794,1796,1798],{"class":39,"line":47},[37,1795,1616],{"class":1607},[37,1797,54],{"class":43},[37,1799,1800],{"class":138},"build\u002Flinux-release\n",[10,1802,1803],{},"and first generate the corresponding database:",[28,1805,1807],{"className":675,"code":1806,"language":677,"meta":33,"style":33},"cmake --preset linux-release\n",[13,1808,1809],{"__ignoreMap":33},[37,1810,1811,1813,1815],{"class":39,"line":40},[37,1812,637],{"class":651},[37,1814,686],{"class":50},[37,1816,1817],{"class":138}," linux-release\n",[10,1819,1820,1821,1824,1825,1827],{},"Daily development typically uses ",[13,1822,1823],{},"build\u002Flinux-debug",". Avoid having ",[13,1826,1594],{}," point to\nA build directory that has not yet been generated or has already expired.",[436,1829,1831],{"id":1830},"cmake_install_prefix",[13,1832,1833],{},"CMAKE_INSTALL_PREFIX",[28,1835,1837],{"className":30,"code":1836,"language":32,"meta":33,"style":33},"\"CMAKE_INSTALL_PREFIX\": \"${sourceDir}\u002Finstall\u002Flinux-debug\"\n",[13,1838,1839],{"__ignoreMap":33},[37,1840,1841,1844,1846],{"class":39,"line":40},[37,1842,1843],{"class":138},"\"CMAKE_INSTALL_PREFIX\"",[37,1845,54],{"class":43},[37,1847,225],{"class":138},[10,1849,1850],{},"Specify the installation directory.",[10,1852,464],{},[466,1854,1855,1863],{},[469,1856,1857],{},[472,1858,1859,1861],{},[475,1860,746],{"align":477},[475,1862,749],{"align":477},[483,1864,1865,1875,1885,1895],{},[472,1866,1867,1872],{},[488,1868,1869],{"align":477},[13,1870,1871],{},"${sourceDir}\u002Finstall\u002Flinux-debug",[488,1873,1874],{"align":477},"This template Debug installation directory",[472,1876,1877,1882],{},[488,1878,1879],{"align":477},[13,1880,1881],{},"${sourceDir}\u002Finstall\u002Flinux-release",[488,1883,1884],{"align":477},"The installation directory for this template's release version",[472,1886,1887,1892],{},[488,1888,1889],{"align":477},[13,1890,1891],{},"\u002Fusr\u002Flocal",[488,1893,1894],{"align":477},"System-level installation path requires permissions and is unsuitable as a template default.",[472,1896,1897,1902],{},[488,1898,1899],{"align":477},[13,1900,1901],{},"\u002Fopt\u002Fmy_project",[488,1903,1904],{"align":477},"system-level or deployment path",[10,1906,1907],{},"This template places the installation directory inside the project for easier learning and removal.",[10,1909,1910],{},"After installation, run:",[28,1912,1914],{"className":675,"code":1913,"language":677,"meta":33,"style":33},".\u002Finstall\u002Flinux-debug\u002Fbin\u002Fcmake_template\n",[13,1915,1916],{"__ignoreMap":33},[37,1917,1918],{"class":39,"line":40},[37,1919,1913],{"class":651},[431,1921,1923],{"id":1922},"buildpresets",[13,1924,826],{},[10,1926,1927,1929],{},[13,1928,826],{}," is the preset for the build stage.",[10,1931,1932],{},"Build phase corresponding command:",[28,1934,1935],{"className":675,"code":1017,"language":677,"meta":33,"style":33},[13,1936,1937],{"__ignoreMap":33},[37,1938,1939,1941,1943,1945],{"class":39,"line":40},[37,1940,637],{"class":651},[37,1942,1026],{"class":50},[37,1944,686],{"class":50},[37,1946,689],{"class":138},[10,1948,1949],{},"Template format:",[28,1951,1953],{"className":30,"code":1952,"language":32,"meta":33,"style":33},"\"buildPresets\": [\n  {\n    \"name\": \"linux-debug\",\n    \"configurePreset\": \"linux-debug\"\n  },\n  {\n    \"name\": \"linux-release\",\n    \"configurePreset\": \"linux-release\"\n  }\n]\n",[13,1954,1955,1962,1967,1978,1987,1991,1995,2005,2013,2018],{"__ignoreMap":33},[37,1956,1957,1960],{"class":39,"line":40},[37,1958,1959],{"class":138},"\"buildPresets\"",[37,1961,121],{"class":43},[37,1963,1964],{"class":39,"line":47},[37,1965,1966],{"class":43},"  {\n",[37,1968,1969,1972,1974,1976],{"class":39,"line":63},[37,1970,1971],{"class":50},"    \"name\"",[37,1973,54],{"class":43},[37,1975,139],{"class":138},[37,1977,60],{"class":43},[37,1979,1980,1983,1985],{"class":39,"line":72},[37,1981,1982],{"class":50},"    \"configurePreset\"",[37,1984,54],{"class":43},[37,1986,381],{"class":138},[37,1988,1989],{"class":39,"line":85},[37,1990,112],{"class":43},[37,1992,1993],{"class":39,"line":98},[37,1994,1966],{"class":43},[37,1996,1997,1999,2001,2003],{"class":39,"line":109},[37,1998,1971],{"class":50},[37,2000,54],{"class":43},[37,2002,252],{"class":138},[37,2004,60],{"class":43},[37,2006,2007,2009,2011],{"class":39,"line":115},[37,2008,1982],{"class":50},[37,2010,54],{"class":43},[37,2012,412],{"class":138},[37,2014,2015],{"class":39,"line":124},[37,2016,2017],{"class":43},"  }\n",[37,2019,2020],{"class":39,"line":130},[37,2021,2022],{"class":43},"]\n",[436,2024,2026],{"id":2025},"name-1",[13,2027,716],{},[28,2029,2030],{"className":30,"code":721,"language":32,"meta":33,"style":33},[13,2031,2032],{"__ignoreMap":33},[37,2033,2034,2036,2038],{"class":39,"line":40},[37,2035,728],{"class":138},[37,2037,54],{"class":43},[37,2039,381],{"class":138},[10,2041,2042],{},"Construct the preset name.",[10,2044,2045],{},"一般建议使用与对应配置预设同名的命令，这样操作起来会更一致。",[28,2047,2049],{"className":675,"code":2048,"language":677,"meta":33,"style":33},"cmake --preset linux-debug\ncmake --build --preset linux-debug\n",[13,2050,2051,2059],{"__ignoreMap":33},[37,2052,2053,2055,2057],{"class":39,"line":40},[37,2054,637],{"class":651},[37,2056,686],{"class":50},[37,2058,689],{"class":138},[37,2060,2061,2063,2065,2067],{"class":39,"line":47},[37,2062,637],{"class":651},[37,2064,1026],{"class":50},[37,2066,686],{"class":50},[37,2068,689],{"class":138},[436,2070,2072],{"id":2071},"configurepreset",[13,2073,2074],{},"configurePreset",[28,2076,2078],{"className":30,"code":2077,"language":32,"meta":33,"style":33},"\"configurePreset\": \"linux-debug\"\n",[13,2079,2080],{"__ignoreMap":33},[37,2081,2082,2085,2087],{"class":39,"line":40},[37,2083,2084],{"class":138},"\"configurePreset\"",[37,2086,54],{"class":43},[37,2088,381],{"class":138},[10,2090,2091],{},"This specifies which configure preset the build preset uses to generate the build directory.",[10,2093,464],{},[466,2095,2096,2104],{},[469,2097,2098],{},[472,2099,2100,2102],{},[475,2101,478],{"align":477},[475,2103,749],{"align":477},[483,2105,2106,2115],{},[472,2107,2108,2112],{},[488,2109,2110],{"align":477},[13,2111,758],{},[488,2113,2114],{"align":477},"Use Debug build directory",[472,2116,2117,2121],{},[488,2118,2119],{"align":477},[13,2120,768],{},[488,2122,2123],{"align":477},"Use the Release build directory",[10,2125,2126,2127,2129,2130,525],{},"Must correspond to the existing ",[13,2128,716],{}," within ",[13,2131,664],{},[431,2133,2135],{"id":2134},"common-extensible-fields","Common extensible fields",[10,2137,2138],{},"When you're starting out, you might not need this right away, but you could come across it later.",[436,2140,2142],{"id":2141},"description",[13,2143,2141],{},[10,2145,2146],{},"Add longer descriptions to presets.",[28,2148,2150],{"className":30,"code":2149,"language":32,"meta":33,"style":33},"\"description\": \"Debug build for Linux using Ninja\"\n",[13,2151,2152],{"__ignoreMap":33},[37,2153,2154,2157,2159],{"class":39,"line":40},[37,2155,2156],{"class":138},"\"description\"",[37,2158,54],{"class":43},[37,2160,2161],{"class":138},"\"Debug build for Linux using Ninja\"\n",[436,2163,2165],{"id":2164},"hidden",[13,2166,2164],{},[10,2168,2169],{},"Hide a certain preset from direct user selection, typically used for inheritance.",[28,2171,2173],{"className":30,"code":2172,"language":32,"meta":33,"style":33},"\"hidden\": true\n",[13,2174,2175],{"__ignoreMap":33},[37,2176,2177,2180,2182],{"class":39,"line":40},[37,2178,2179],{"class":138},"\"hidden\"",[37,2181,54],{"class":43},[37,2183,2184],{"class":50},"true\n",[436,2186,2188],{"id":2187},"inherits",[13,2189,2187],{},[10,2191,2192],{},"Inherit from another preset to reduce repetition.",[28,2194,2196],{"className":30,"code":2195,"language":32,"meta":33,"style":33},"{\n  \"name\": \"linux-debug\",\n  \"inherits\": \"linux-base\",\n  \"cacheVariables\": {\n    \"CMAKE_BUILD_TYPE\": \"Debug\"\n  }\n}\n",[13,2197,2198,2202,2213,2225,2232,2241,2245],{"__ignoreMap":33},[37,2199,2200],{"class":39,"line":40},[37,2201,44],{"class":43},[37,2203,2204,2207,2209,2211],{"class":39,"line":47},[37,2205,2206],{"class":50},"  \"name\"",[37,2208,54],{"class":43},[37,2210,139],{"class":138},[37,2212,60],{"class":43},[37,2214,2215,2218,2220,2223],{"class":39,"line":63},[37,2216,2217],{"class":50},"  \"inherits\"",[37,2219,54],{"class":43},[37,2221,2222],{"class":138},"\"linux-base\"",[37,2224,60],{"class":43},[37,2226,2227,2230],{"class":39,"line":72},[37,2228,2229],{"class":50},"  \"cacheVariables\"",[37,2231,69],{"class":43},[37,2233,2234,2237,2239],{"class":39,"line":85},[37,2235,2236],{"class":50},"    \"CMAKE_BUILD_TYPE\"",[37,2238,54],{"class":43},[37,2240,1262],{"class":138},[37,2242,2243],{"class":39,"line":98},[37,2244,2017],{"class":43},[37,2246,2247],{"class":39,"line":109},[37,2248,429],{"class":43},[436,2250,2252],{"id":2251},"environment",[13,2253,2251],{},[10,2255,2256],{},"Set environment variables.",[28,2258,2260],{"className":30,"code":2259,"language":32,"meta":33,"style":33},"\"environment\": {\n  \"CC\": \"\u002Fusr\u002Fbin\u002Fgcc\",\n  \"CXX\": \"\u002Fusr\u002Fbin\u002Fg++\"\n}\n",[13,2261,2262,2269,2281,2291],{"__ignoreMap":33},[37,2263,2264,2267],{"class":39,"line":40},[37,2265,2266],{"class":138},"\"environment\"",[37,2268,69],{"class":43},[37,2270,2271,2274,2276,2279],{"class":39,"line":47},[37,2272,2273],{"class":50},"  \"CC\"",[37,2275,54],{"class":43},[37,2277,2278],{"class":138},"\"\u002Fusr\u002Fbin\u002Fgcc\"",[37,2280,60],{"class":43},[37,2282,2283,2286,2288],{"class":39,"line":63},[37,2284,2285],{"class":50},"  \"CXX\"",[37,2287,54],{"class":43},[37,2289,2290],{"class":138},"\"\u002Fusr\u002Fbin\u002Fg++\"\n",[37,2292,2293],{"class":39,"line":72},[37,2294,429],{"class":43},[10,2296,2297],{},"Generally, it's not advisable to hardcode the compiler in the default template unless your project specifically requires a particular toolchain.",[436,2299,2301],{"id":2300},"targets",[13,2302,2300],{},[10,2304,2305],{},"Specify which targets to build by default.",[28,2307,2309],{"className":30,"code":2308,"language":32,"meta":33,"style":33},"\"targets\": [\"cmake_template\"]\n",[13,2310,2311],{"__ignoreMap":33},[37,2312,2313,2316,2319,2322],{"class":39,"line":40},[37,2314,2315],{"class":138},"\"targets\"",[37,2317,2318],{"class":43},": [",[37,2320,2321],{"class":138},"\"cmake_template\"",[37,2323,2022],{"class":43},[10,2325,2326],{},"If not specified, all targets will be built by default.",[436,2328,2330],{"id":2329},"jobs",[13,2331,2329],{},[10,2333,2334],{},"Specify the number of parallel compilations.",[28,2336,2338],{"className":30,"code":2337,"language":32,"meta":33,"style":33},"\"jobs\": 8\n",[13,2339,2340],{"__ignoreMap":33},[37,2341,2342,2345,2347],{"class":39,"line":40},[37,2343,2344],{"class":138},"\"jobs\"",[37,2346,54],{"class":43},[37,2348,2349],{"class":50},"8\n",[10,2351,2352],{},"When not specified, it is determined by the underlying build tools.",[431,2354,2356,2357,2360],{"id":2355},"why-isnt-there-installpresets","Why isn't there ",[13,2358,2359],{},"installPresets","?",[10,2362,2363],{},"Many people would guess that you could write:",[28,2365,2367],{"className":675,"code":2366,"language":677,"meta":33,"style":33},"cmake --install --preset linux-debug\n",[13,2368,2369],{"__ignoreMap":33},[37,2370,2371,2373,2376,2378],{"class":39,"line":40},[37,2372,637],{"class":651},[37,2374,2375],{"class":50}," --install",[37,2377,686],{"class":50},[37,2379,689],{"class":138},[10,2381,2382],{},"Yes, that's correct. Typical CMake preset files do not use the root field. This template adopts a more general installation command.",[28,2384,2386],{"className":675,"code":2385,"language":677,"meta":33,"style":33},"cmake --install build\u002Flinux-debug\n",[13,2387,2388],{"__ignoreMap":33},[37,2389,2390,2392,2394],{"class":39,"line":40},[37,2391,637],{"class":651},[37,2393,2375],{"class":50},[37,2395,2396],{"class":138}," build\u002Flinux-debug\n",[10,2398,2399],{},"The installation command needs to be passed the build directory, as the installation rules are generated during the configuration step into the build directory.",[431,2401,2403],{"id":2402},"vscode-cmake-tools-workflow","VSCode CMake Tools Workflow",[10,2405,2406,2407,525],{},"After installing the CMake Tools extension for VSCode, it will automatically recognize ",[13,2408,15],{},[10,2410,2411],{},"In this section, we map command-line operations to their corresponding actions in the VSCode graphical interface.",[436,2413,2415],{"id":2414},"open-the-cmake-panel","Open the CMake panel.",[10,2417,2418,2419,2422],{},"After opening the project root directory in VSCode, click the ",[13,2420,2421],{},"CMake"," icon on the left sidebar.",[10,2424,2425],{},"If CMake Tools properly identifies the project, you will see entries for preset, Configure, Build, run target, and others.",[436,2427,2429],{"id":2428},"configure","Configure",[10,2431,2432],{},"Command line:",[28,2434,2435],{"className":675,"code":676,"language":677,"meta":33,"style":33},[13,2436,2437],{"__ignoreMap":33},[37,2438,2439,2441,2443],{"class":39,"line":40},[37,2440,637],{"class":651},[37,2442,686],{"class":50},[37,2444,689],{"class":138},[10,2446,2447],{},"In the VSCode graphical interface, what corresponds is:",[516,2449,2450,2453],{},[519,2451,2452],{},"Click Configure.",[519,2454,2455,2456,525],{},"Choose ",[13,2457,890],{},[10,2459,2460],{},[2461,2462],"img",{"alt":2463,"src":2464},"alt text","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780705995297.webp",[10,2466,2467],{},"This step will read:",[28,2469,2472],{"className":2470,"code":2471,"language":1177,"meta":33},[1175],"CMakePresets.json\nCMakeLists.txt\n",[13,2473,2471],{"__ignoreMap":33},[10,2475,2476],{},"and generate:",[28,2478,2480],{"className":2479,"code":1531,"language":1177,"meta":33},[1175],[13,2481,1531],{"__ignoreMap":33},[10,2483,2484,2485,2487],{},"If you modify ",[13,2486,631],{},", add new source files, or change third-party dependencies, you typically need to re-run Configure.",[436,2489,2491],{"id":2490},"build","Build",[10,2493,2432],{},[28,2495,2496],{"className":675,"code":1017,"language":677,"meta":33,"style":33},[13,2497,2498],{"__ignoreMap":33},[37,2499,2500,2502,2504,2506],{"class":39,"line":40},[37,2501,637],{"class":651},[37,2503,1026],{"class":50},[37,2505,686],{"class":50},[37,2507,689],{"class":138},[10,2509,2510],{},"In the graphical interface of VSCode, CMake Tools will recognize the corresponding build presets after configuration.",[10,2512,2513],{},[2461,2514],{"alt":2463,"src":2515},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780706149481.webp",[10,2517,2518,2519,2521],{},"Then click the ",[13,2520,2491],{}," button in the bottom left corner or in the CMake panel:",[10,2523,2524],{},[2461,2525],{"alt":2463,"src":2526},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707106120.webp",[10,2528,2529,2530,2532],{},"This step will compile the ",[13,2531,1680],{}," file and generate the executable and dynamic library files in the build directory.",[10,2534,2535],{},"The Debug executable for this template is typically found at:",[28,2537,2540],{"className":2538,"code":2539,"language":1177,"meta":33},[1175],"build\u002Flinux-debug\u002Fsrc\u002Fcmake_template\n",[13,2541,2539],{"__ignoreMap":33},[10,2543,2544,2545,2547],{},"If you've only modified ordinary ",[13,2546,1680],{}," code, you generally just need to rebuild, not necessarily reconfigure.",[436,2549,2551],{"id":2550},"run-the-program-in-the-build-directory","Run the program in the build directory.",[10,2553,2432],{},[28,2555,2557],{"className":675,"code":2556,"language":677,"meta":33,"style":33},".\u002Fbuild\u002Flinux-debug\u002Fsrc\u002Fcmake_template\n",[13,2558,2559],{"__ignoreMap":33},[37,2560,2561],{"class":39,"line":40},[37,2562,2556],{"class":651},[10,2564,2447],{},[516,2566,2567,2570,2574],{},[519,2568,2569],{},"Select the run\u002Fdebug target.",[519,2571,2455,2572,525],{},[13,2573,524],{},[519,2575,2576],{},"Click the run button.",[10,2578,2579],{},[2461,2580],{"alt":2463,"src":2581},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707152235.webp",[10,2583,2584],{},[2461,2585],{"alt":2463,"src":2586},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707202465.webp",[10,2588,2589],{},"After running, you will see the program output in the terminal.",[10,2591,2592],{},[2461,2593],{"alt":2463,"src":2594},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707302786.webp",[10,2596,2597,2598,2600,2601,2604],{},"If you want to debug with breakpoints, click the ",[13,2599,909],{}," button provided by CMake Tools; if you just want to run the program, click the ",[13,2602,2603],{},"Launch"," button.",[10,2606,2607,2608,1309,2610,2612,2613,2615,2616,2618],{},"In addition to the access points mentioned above, the VSCode bottom status bar also has ",[13,2609,909],{},[13,2611,2603],{}," quick buttons next to the ",[13,2614,2491],{}," button. Once you've selected a ",[13,2617,524],{}," target and completed the build, you can directly click here to run or debug your program.",[10,2620,2621],{},[2461,2622],{"alt":2463,"src":2623},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780715507074.webp",[436,2625,2627],{"id":2626},"install","Install",[10,2629,2432],{},[28,2631,2632],{"className":675,"code":2385,"language":677,"meta":33,"style":33},[13,2633,2634],{"__ignoreMap":33},[37,2635,2636,2638,2640],{"class":39,"line":40},[37,2637,637],{"class":651},[37,2639,2375],{"class":50},[37,2641,2396],{"class":138},[10,2643,2644,2645,2648],{},"In the VSCode GUI, you can press ",[13,2646,2647],{},"Ctrl+Shift+P"," to open the command panel, then input:",[28,2650,2653],{"className":2651,"code":2652,"language":1177,"meta":33},[1175],"CMake: Install\n",[13,2654,2652],{"__ignoreMap":33},[10,2656,2657],{},[2461,2658],{"alt":2463,"src":2659},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707509033.webp",[10,2661,2662,2663,2665],{},"If the currently selected ",[13,2664,758],{}," preset is active, it is equivalent to:",[28,2667,2668],{"className":675,"code":2385,"language":677,"meta":33,"style":33},[13,2669,2670],{"__ignoreMap":33},[37,2671,2672,2674,2676],{"class":39,"line":40},[37,2673,637],{"class":651},[37,2675,2375],{"class":50},[37,2677,2396],{"class":138},[10,2679,2680,2681],{},"The installed program is located at: ",[602,2682,2683],{},"I18N_PROTECTED_0",[28,2685,2688],{"className":2686,"code":2687,"language":1177,"meta":33},[1175],"install\u002Flinux-debug\u002Fbin\u002Fcmake_template\n",[13,2689,2687],{"__ignoreMap":33},[10,2691,2692],{},"For daily coding, running, and debugging, you typically directly use the programs in the build directory.",[28,2694,2696],{"className":2695,"code":2539,"language":1177,"meta":33},[1175],[13,2697,2539],{"__ignoreMap":33},[10,2699,2700],{},"You only need to run the install command when verifying the installation layout, installing header files, setting up dynamic library RPATHs, or preparing the program for release.",[436,2702,2704],{"id":2703},"mapping-summary","Mapping Summary",[466,2706,2707,2720],{},[469,2708,2709],{},[472,2710,2711,2714,2717],{},[475,2712,2713],{"align":477},"What you want to do",[475,2715,2716],{"align":477},"command line",[475,2718,2719],{"align":477},"VSCode CMake Tools",[483,2721,2722,2737,2750,2766,2782],{},[472,2723,2724,2727,2731],{},[488,2725,2726],{"align":477},"Configure the project",[488,2728,2729],{"align":477},[13,2730,1734],{},[488,2732,2733,2734,2736],{"align":477},"After selecting ",[13,2735,890],{},", click Configure.",[472,2738,2739,2742,2747],{},[488,2740,2741],{"align":477},"Compile project",[488,2743,2744],{"align":477},[13,2745,2746],{},"cmake --build --preset linux-debug",[488,2748,2749],{"align":477},"Click Build",[472,2751,2752,2755,2760],{},[488,2753,2754],{"align":477},"Run build artifacts",[488,2756,2757],{"align":477},[13,2758,2759],{},".\u002Fbuild\u002Flinux-debug\u002Fsrc\u002Fcmake_template",[488,2761,2762,2763,2765],{"align":477},"After selecting the ",[13,2764,524],{}," target, click the run button.",[472,2767,2768,2771,2777],{},[488,2769,2770],{"align":477},"Debugging build artifacts",[488,2772,2773,2774],{"align":477},"Debugging with GDB ",[13,2775,2776],{},"build\u002Flinux-debug\u002Fsrc\u002Fcmake_template",[488,2778,2762,2779,2781],{"align":477},[13,2780,524],{}," target, click the Debug button.",[472,2783,2784,2787,2792],{},[488,2785,2786],{"align":477},"installation project",[488,2788,2789],{"align":477},[13,2790,2791],{},"cmake --install build\u002Flinux-debug",[488,2793,2794,2795],{"align":477},"Execute command panel ",[13,2796,2797],{},"CMake: Install",[10,2799,2800,2801,2804],{},"This way, you don't need to manually write ",[13,2802,2803],{},".vscode\u002Ftasks.json",", nor do you need to prepare an extra VSCode debugging configuration file.",[431,2806,2808],{"id":2807},"running-and-debugging-considerations","Running and Debugging Considerations",[10,2810,2811],{},"CMake Tools can directly run or debug the currently selected executable target, so there's no need to write additional run scripts manually.",[10,2813,2814],{},"If you need to debug, it's recommended to install the Microsoft C\u002FC++ extension and GDB, since CMake Tools handles target selection, but the actual C\u002FC++ debugger still requires GDB\u002FLLDB support.",[10,2816,2817,2818,2820],{},"If you've only changed the ",[13,2819,1680],{}," code, simply rebuilding and then running or debugging should suffice.",[10,2822,2823,2824,2826],{},"If you have changed ",[13,2825,631],{},", added new source files, or modified dependencies, it is recommended to first Configure, then Build, and afterward Run or Debug.",[436,2828,2830,2831],{"id":2829},"why-not-write-tasksjson","Why not write ",[13,2832,2833],{},"tasks.json",[10,2835,2836,2837,2839],{},"The old template commonly uses ",[13,2838,2803],{}," for long command strings:",[28,2841,2843],{"className":675,"code":2842,"language":677,"meta":33,"style":33},"cmake ..\nmake install\nsource setup.bash\nrun app\n",[13,2844,2845,2852,2860,2868],{"__ignoreMap":33},[37,2846,2847,2849],{"class":39,"line":40},[37,2848,637],{"class":651},[37,2850,2851],{"class":138}," ..\n",[37,2853,2854,2857],{"class":39,"line":47},[37,2855,2856],{"class":651},"make",[37,2858,2859],{"class":138}," install\n",[37,2861,2862,2865],{"class":39,"line":63},[37,2863,2864],{"class":50},"source",[37,2866,2867],{"class":138}," setup.bash\n",[37,2869,2870,2873],{"class":39,"line":72},[37,2871,2872],{"class":651},"run",[37,2874,2875],{"class":138}," app\n",[10,2877,2878,2879,525],{},"This template doesn't work that way. The reason is that the build, run, and debug entry points can be handled by CMake Tools, while the command-line workflow is governed by ",[13,2880,15],{},[10,2882,2883,2884,2887],{},"这样职责更清楚：",[2885,2886],"br",{},"\nThis makes responsibilities clearer:",[466,2889,2890,2900],{},[469,2891,2892],{},[472,2893,2894,2897],{},[475,2895,2896],{"align":477},"file",[475,2898,2899],{"align":477},"Responsible for",[483,2901,2902,2911,2918],{},[472,2903,2904,2908],{},[488,2905,2906],{"align":477},[13,2907,15],{},[488,2909,2910],{"align":477},"configure\u002Fbuild parameters",[472,2912,2913,2915],{},[488,2914,2719],{"align":477},[488,2916,2917],{"align":477},"Select preset, Configure, Build, run, and debug target",[472,2919,2920,2924],{},[488,2921,2922],{"align":477},[13,2923,631],{},[488,2925,2926],{"align":477},"target, dependency, installation rules",[436,2928,2930],{"id":2929},"need-to-install-gdb","Need to install gdb",[10,2932,2933],{},"Ubuntu\u002FDebian：",[28,2935,2937],{"className":675,"code":2936,"language":677,"meta":33,"style":33},"sudo apt install gdb\n",[13,2938,2939],{"__ignoreMap":33},[37,2940,2941,2944,2947,2950],{"class":39,"line":40},[37,2942,2943],{"class":651},"sudo",[37,2945,2946],{"class":138}," apt",[37,2948,2949],{"class":138}," install",[37,2951,2952],{"class":138}," gdb\n",[10,2954,2955],{},"Fedora：",[28,2957,2959],{"className":675,"code":2958,"language":677,"meta":33,"style":33},"sudo dnf install gdb\n",[13,2960,2961],{"__ignoreMap":33},[37,2962,2963,2965,2968,2970],{"class":39,"line":40},[37,2964,2943],{"class":651},[37,2966,2967],{"class":138}," dnf",[37,2969,2949],{"class":138},[37,2971,2952],{"class":138},[431,2973,2975],{"id":2974},"common-errors","Common Errors",[436,2977,2979],{"id":2978},"forgot-to-install-ninja","Forgot to install Ninja.",[10,2981,2982],{},"The error message might be similar to:",[28,2984,2987],{"className":2985,"code":2986,"language":1177,"meta":33},[1175],"CMake was unable to find a build program corresponding to \"Ninja\"\n",[13,2988,2986],{"__ignoreMap":33},[10,2990,2991],{},"Solution:",[28,2993,2995],{"className":675,"code":2994,"language":677,"meta":33,"style":33},"sudo apt install ninja-build\n",[13,2996,2997],{"__ignoreMap":33},[37,2998,2999,3001,3003,3005],{"class":39,"line":40},[37,3000,2943],{"class":651},[37,3002,2946],{"class":138},[37,3004,2949],{"class":138},[37,3006,3007],{"class":138}," ninja-build\n",[10,3009,3010],{},"or",[28,3012,3014],{"className":675,"code":3013,"language":677,"meta":33,"style":33},"sudo dnf install ninja-build\n",[13,3015,3016],{"__ignoreMap":33},[37,3017,3018,3020,3022,3024],{"class":39,"line":40},[37,3019,2943],{"class":651},[37,3021,2967],{"class":138},[37,3023,2949],{"class":138},[37,3025,3007],{"class":138},[436,3027,3029],{"id":3028},"preset-name-is-misspelled","preset name is misspelled",[10,3031,3032],{},"Error command:",[28,3034,3036],{"className":675,"code":3035,"language":677,"meta":33,"style":33},"cmake --preset debug\n",[13,3037,3038],{"__ignoreMap":33},[37,3039,3040,3042,3044],{"class":39,"line":40},[37,3041,637],{"class":651},[37,3043,686],{"class":50},[37,3045,3046],{"class":138}," debug\n",[10,3048,3049,3050,3052],{},"If the file doesn't have the ",[13,3051,778],{}," preset, it will fail.",[10,3054,3055],{},"View available presets:",[28,3057,3059],{"className":675,"code":3058,"language":677,"meta":33,"style":33},"cmake --list-presets\n",[13,3060,3061],{"__ignoreMap":33},[37,3062,3063,3065],{"class":39,"line":40},[37,3064,637],{"class":651},[37,3066,3067],{"class":50}," --list-presets\n",[436,3069,3071],{"id":3070},"i-forgot-to-configure-before-building","I forgot to configure before building.",[10,3073,3074],{},"If you just run it for the first time:",[28,3076,3077],{"className":675,"code":1017,"language":677,"meta":33,"style":33},[13,3078,3079],{"__ignoreMap":33},[37,3080,3081,3083,3085,3087],{"class":39,"line":40},[37,3082,637],{"class":651},[37,3084,1026],{"class":50},[37,3086,686],{"class":50},[37,3088,689],{"class":138},[10,3090,3091],{},"It might fail because the build directory hasn't been created yet.",[10,3093,3094],{},"Correct order:",[28,3096,3097],{"className":675,"code":2048,"language":677,"meta":33,"style":33},[13,3098,3099,3107],{"__ignoreMap":33},[37,3100,3101,3103,3105],{"class":39,"line":40},[37,3102,637],{"class":651},[37,3104,686],{"class":50},[37,3106,689],{"class":138},[37,3108,3109,3111,3113,3115],{"class":39,"line":47},[37,3110,637],{"class":651},[37,3112,1026],{"class":50},[37,3114,686],{"class":50},[37,3116,689],{"class":138},[3118,3119,3120],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":33,"searchDepth":47,"depth":47,"links":3122},[3123,3127,3134,3139,3143,3151,3153,3161,3166],{"id":433,"depth":47,"text":434,"children":3124},[3125,3126],{"id":438,"depth":63,"text":438},{"id":537,"depth":63,"text":540},{"id":661,"depth":47,"text":664,"children":3128},[3129,3130,3131,3132,3133],{"id":716,"depth":63,"text":716},{"id":848,"depth":63,"text":851},{"id":928,"depth":63,"text":928},{"id":1036,"depth":63,"text":1039},{"id":1185,"depth":63,"text":1188},{"id":1284,"depth":47,"text":1285,"children":3135},[3136,3137,3138],{"id":1288,"depth":63,"text":1291},{"id":1426,"depth":63,"text":1429},{"id":1830,"depth":63,"text":1833},{"id":1922,"depth":47,"text":826,"children":3140},[3141,3142],{"id":2025,"depth":63,"text":716},{"id":2071,"depth":63,"text":2074},{"id":2134,"depth":47,"text":2135,"children":3144},[3145,3146,3147,3148,3149,3150],{"id":2141,"depth":63,"text":2141},{"id":2164,"depth":63,"text":2164},{"id":2187,"depth":63,"text":2187},{"id":2251,"depth":63,"text":2251},{"id":2300,"depth":63,"text":2300},{"id":2329,"depth":63,"text":2329},{"id":2355,"depth":47,"text":3152},"Why isn't there installPresets?",{"id":2402,"depth":47,"text":2403,"children":3154},[3155,3156,3157,3158,3159,3160],{"id":2414,"depth":63,"text":2415},{"id":2428,"depth":63,"text":2429},{"id":2490,"depth":63,"text":2491},{"id":2550,"depth":63,"text":2551},{"id":2626,"depth":63,"text":2627},{"id":2703,"depth":63,"text":2704},{"id":2807,"depth":47,"text":2808,"children":3162},[3163,3165],{"id":2829,"depth":63,"text":3164},"Why not write tasks.json",{"id":2929,"depth":63,"text":2930},{"id":2974,"depth":47,"text":2975,"children":3167},[3168,3169,3170],{"id":2978,"depth":63,"text":2979},{"id":3028,"depth":63,"text":3029},{"id":3070,"depth":63,"text":3071},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","2200-0100","2023-10-05","CMakePresets.json is used to save common CMake configurations. It solves the problem of having to manually write long series of cmake -S ... -B ... -G ... -D... commands every time.","wiki\u002F2023-10-05-cplusplus-jiao-xue","en-us:2023-10-05-cplusplus-jiao-xue","\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装",false,true,null,"en-US","en-us",{},{"title":5,"description":3174},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","4ygjRBDjPgmoIszkl5GjJZ0tAbiyFzEyC30nyg2f32Q",[3192,3198,3203,3208,3213,3218,3223,3228,3233,3238,3243,3248,3253,3258,3263,3268,3273,3278,3283,3288,3293,3298,3303,3308,3313,3318,3323,3328,3333,3338,3343,3348,3353,3358,3363,3368,3373,3378,3383,3388,3393,3398,3403,3408,3413,3418,3423,3428,3433,3438,3443,3448,3453,3458,3463,3468,3473,3478,3483,3488,3493,3498,3503,3508,3513,3518,3523,3528,3533,3538,3543,3548,3553,3558,3563,3568,3569,3574,3579,3584,3589,3594],{"path":3193,"stem":3194,"title":3195,"date":3173,"chapterOrder":3196,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++ Development Environment Setup and Testing","0100",0,{"path":3199,"stem":3200,"title":3201,"date":3173,"chapterOrder":3202,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++ Basics","0200",{"path":3204,"stem":3205,"title":3206,"date":3173,"chapterOrder":3207,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","Data Types and Data Storage","0300",{"path":3209,"stem":3210,"title":3211,"date":3173,"chapterOrder":3212,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","Input and Output","0400",{"path":3214,"stem":3215,"title":3216,"date":3173,"chapterOrder":3217,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","operator","0500",{"path":3219,"stem":3220,"title":3221,"date":3173,"chapterOrder":3222,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","program flow structure","0600",{"path":3224,"stem":3225,"title":3226,"date":3173,"chapterOrder":3227,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","array","0700",{"path":3229,"stem":3230,"title":3231,"date":3173,"chapterOrder":3232,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","Functions and Header Files","0800",{"path":3234,"stem":3235,"title":3236,"date":3173,"chapterOrder":3237,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":3239,"stem":3240,"title":3241,"date":3173,"chapterOrder":3242,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","Structures and Unions","1000",{"path":3244,"stem":3245,"title":3246,"date":3173,"chapterOrder":3247,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","Memory Partitioning and Lifecycle","1100",{"path":3249,"stem":3250,"title":3251,"date":3173,"chapterOrder":3252,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":3254,"stem":3255,"title":3256,"date":3173,"chapterOrder":3257,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","Advanced Functions and Namespaces","1300",{"path":3259,"stem":3260,"title":3261,"date":3173,"chapterOrder":3262,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","encapsulation","1400-0100",{"path":3264,"stem":3265,"title":3266,"date":3173,"chapterOrder":3267,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","Object initialization and cleanup","1400-0200",{"path":3269,"stem":3270,"title":3271,"date":3173,"chapterOrder":3272,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","Object Model and the `this` Pointer","1400-0300",{"path":3274,"stem":3275,"title":3276,"date":3173,"chapterOrder":3277,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","Friends and operator overloading","1400-0400",{"path":3279,"stem":3280,"title":3281,"date":3173,"chapterOrder":3282,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","inheritance","1400-0500",{"path":3284,"stem":3285,"title":3286,"date":3173,"chapterOrder":3287,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","polymorphism","1400-0600",{"path":3289,"stem":3290,"title":3291,"date":3173,"chapterOrder":3292,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","Classes and Objects","1400",{"path":3294,"stem":3295,"title":3296,"date":3173,"chapterOrder":3297,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","File operations","1500",{"path":3299,"stem":3300,"title":3301,"date":3173,"chapterOrder":3302,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":3304,"stem":3305,"title":3306,"date":3173,"chapterOrder":3307,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","template","1700",{"path":3309,"stem":3310,"title":3311,"date":3173,"chapterOrder":3312,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","Introduction to STL","1800-0100",{"path":3314,"stem":3315,"title":3316,"date":3173,"chapterOrder":3317,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":3319,"stem":3320,"title":3321,"date":3173,"chapterOrder":3322,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string container","1800-0300",{"path":3324,"stem":3325,"title":3326,"date":3173,"chapterOrder":3327,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":3329,"stem":3330,"title":3331,"date":3173,"chapterOrder":3332,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":3334,"stem":3335,"title":3336,"date":3173,"chapterOrder":3337,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":3339,"stem":3340,"title":3341,"date":3173,"chapterOrder":3342,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue container","1800-0700",{"path":3344,"stem":3345,"title":3346,"date":3173,"chapterOrder":3347,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":3349,"stem":3350,"title":3351,"date":3173,"chapterOrder":3352,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":3354,"stem":3355,"title":3356,"date":3173,"chapterOrder":3357,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":3359,"stem":3360,"title":3361,"date":3173,"chapterOrder":3362,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","Function objects and predicates","1800-1100",{"path":3364,"stem":3365,"title":3366,"date":3173,"chapterOrder":3367,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","Common algorithms","1800-1200",{"path":3369,"stem":3370,"title":3371,"date":3173,"chapterOrder":3372,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","Level up your programming with STL.","1800",{"path":3374,"stem":3375,"title":3376,"date":3173,"chapterOrder":3377,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++ Type Casting","1900",{"path":3379,"stem":3380,"title":3381,"date":3173,"chapterOrder":3382,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":3384,"stem":3385,"title":3386,"date":3173,"chapterOrder":3387,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":3389,"stem":3390,"title":3391,"date":3173,"chapterOrder":3392,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":3394,"stem":3395,"title":3396,"date":3173,"chapterOrder":3397,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":3399,"stem":3400,"title":3401,"date":3173,"chapterOrder":3402,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","range-based for loop","2000-0500",{"path":3404,"stem":3405,"title":3406,"date":3173,"chapterOrder":3407,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","structured binding","2000-0600",{"path":3409,"stem":3410,"title":3411,"date":3173,"chapterOrder":3412,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":3414,"stem":3415,"title":3416,"date":3173,"chapterOrder":3417,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":3419,"stem":3420,"title":3421,"date":3173,"chapterOrder":3422,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","Smart pointer","2000-0900",{"path":3424,"stem":3425,"title":3426,"date":3173,"chapterOrder":3427,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","Rvalue references and move semantics","2000-1000",{"path":3429,"stem":3430,"title":3431,"date":3173,"chapterOrder":3432,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda expression","2000-1100",{"path":3434,"stem":3435,"title":3436,"date":3173,"chapterOrder":3437,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":3439,"stem":3440,"title":3441,"date":3173,"chapterOrder":3442,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":3444,"stem":3445,"title":3446,"date":3173,"chapterOrder":3447,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":3449,"stem":3450,"title":3451,"date":3173,"chapterOrder":3452,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":3454,"stem":3455,"title":3456,"date":3173,"chapterOrder":3457,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":3459,"stem":3460,"title":3461,"date":3173,"chapterOrder":3462,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":3464,"stem":3465,"title":3466,"date":3173,"chapterOrder":3467,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":3469,"stem":3470,"title":3471,"date":3173,"chapterOrder":3472,"chapterDepth":47,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread and join","2000-1900-0100",{"path":3474,"stem":3475,"title":3476,"date":3173,"chapterOrder":3477,"chapterDepth":47,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":3479,"stem":3480,"title":3481,"date":3173,"chapterOrder":3482,"chapterDepth":47,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":3484,"stem":3485,"title":3486,"date":3173,"chapterOrder":3487,"chapterDepth":47,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":3489,"stem":3490,"title":3491,"date":3173,"chapterOrder":3492,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","Concurrent programming","2000-1900",{"path":3494,"stem":3495,"title":3496,"date":3173,"chapterOrder":3497,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":3499,"stem":3500,"title":3501,"date":3173,"chapterOrder":3502,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","Modules Introduction","2000-2100",{"path":3504,"stem":3505,"title":3506,"date":3173,"chapterOrder":3507,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","Modern C++","2000",{"path":3509,"stem":3510,"title":3511,"date":3173,"chapterOrder":3512,"chapterDepth":47,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","Timers and Asynchronous I\u002FO","2100-0100-0100",{"path":3514,"stem":3515,"title":3516,"date":3173,"chapterOrder":3517,"chapterDepth":47,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio Basics","2100-0100-0200",{"path":3519,"stem":3520,"title":3521,"date":3173,"chapterOrder":3522,"chapterDepth":47,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","serial communication","2100-0100-0300",{"path":3524,"stem":3525,"title":3526,"date":3173,"chapterOrder":3527,"chapterDepth":47,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP communication","2100-0100-0400",{"path":3529,"stem":3530,"title":3531,"date":3173,"chapterOrder":3532,"chapterDepth":47,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP communication","2100-0100-0500",{"path":3534,"stem":3535,"title":3536,"date":3173,"chapterOrder":3537,"chapterDepth":47,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","Robot Engineering Approach and ROS2 Integration","2100-0100-0600",{"path":3539,"stem":3540,"title":3541,"date":3173,"chapterOrder":3542,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio asynchronous IO library","2100-0100",{"path":3544,"stem":3545,"title":3546,"date":3173,"chapterOrder":3547,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen linear algebra library","2100-0200",{"path":3549,"stem":3550,"title":3551,"date":3173,"chapterOrder":3552,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV Computer Vision Library","2100-0300",{"path":3554,"stem":3555,"title":3556,"date":3173,"chapterOrder":3557,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL Point Cloud Library","2100-0400",{"path":3559,"stem":3560,"title":3561,"date":3173,"chapterOrder":3562,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus Lie group and Lie algebra library","2100-0500",{"path":3564,"stem":3565,"title":3566,"date":3173,"chapterOrder":3567,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","Learning Common Libraries","2100",{"path":3171,"stem":3189,"title":5,"date":3173,"chapterOrder":3172,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},{"path":3570,"stem":3571,"title":3572,"date":3173,"chapterOrder":3573,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","Top-level CMake and Public Compilation Options","2200-0200",{"path":3575,"stem":3576,"title":3577,"date":3173,"chapterOrder":3578,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","Detailed CMake Explanation for src and lib Modules","2200-0300",{"path":3580,"stem":3581,"title":3582,"date":3173,"chapterOrder":3583,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","How to write third-party library dependencies","2200-0400",{"path":3585,"stem":3586,"title":3587,"date":3173,"chapterOrder":3588,"chapterDepth":40,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","Template Extensions and FAQ","2200-0500",{"path":3590,"stem":3591,"title":3592,"date":3173,"chapterOrder":3593,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3181},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake Project Template","2200",{"path":3177,"stem":3595,"title":3596,"date":3173,"chapterOrder":3183,"chapterDepth":3197,"docKey":3176,"docRoot":3177,"docTitle":3178,"isWikiDoc":3182,"isWikiIndex":3182},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":3598},[3599,3600,3603,3606,3609],{"path":3171,"localeSlug":3185,"i18nKey":3180},{"path":3601,"localeSlug":3602,"i18nKey":3180},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","zh-hant",{"path":3604,"localeSlug":3605,"i18nKey":3180},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","zh-hk",{"path":3607,"localeSlug":3608,"i18nKey":3180},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","zh-tw",{"path":3610,"localeSlug":3611,"i18nKey":3180},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","zh-cn",[3171,3188,3601,3188,3604,3188,3607,3188,3610,3188],1784646871920]