[{"data":1,"prerenderedAt":3619},["ShallowReactive",2],{"wiki-page-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang":3,"wiki-doc-items-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang":3197,"language-switcher-data-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang":3603,"wiki-i18n-paths-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang":3618},{"id":4,"title":5,"body":6,"canonicalPath":3177,"chapterDepth":40,"chapterOrder":3178,"date":3179,"description":3180,"docI18nKey":3181,"docKey":3182,"docRoot":3183,"docTitle":3184,"extension":3185,"i18nKey":3186,"isBlogPost":3187,"isWikiDoc":3188,"isWikiIndex":3187,"layout":3189,"legacyPath":3189,"locale":3190,"localeSlug":3191,"meta":3192,"navigation":3188,"path":3177,"seo":3193,"sourcePath":3194,"sourceStem":3186,"stem":3195,"wikiDepth":40,"__hash__":3196},"content\u002F_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装.md","CMakePresets與構建安裝",{"type":7,"value":8,"toc":3127},"minimark",[9,21,27,430,434,440,455,461,464,511,514,534,540,587,590,592,651,658,681,684,690,695,698,715,718,739,744,758,761,763,830,833,851,854,866,872,887,890,892,943,946,951,966,969,972,1014,1017,1029,1035,1051,1054,1060,1075,1078,1080,1123,1126,1169,1172,1186,1192,1200,1203,1209,1256,1265,1268,1283,1286,1302,1306,1312,1324,1333,1335,1391,1394,1444,1450,1465,1469,1471,1505,1514,1517,1529,1536,1542,1545,1548,1554,1557,1569,1572,1578,1592,1595,1609,1616,1641,1644,1650,1659,1668,1680,1686,1692,1698,1705,1708,1712,1715,1721,1724,1730,1733,1739,1742,1772,1778,1790,1796,1800,1803,1823,1826,1840,1850,1856,1870,1873,1875,1927,1930,1933,1942,1947,1952,1955,1969,1972,2045,2050,2062,2065,2068,2091,2096,2110,2113,2115,2145,2153,2156,2159,2164,2167,2182,2187,2190,2205,2210,2213,2269,2274,2277,2315,2318,2323,2326,2344,2347,2352,2355,2370,2373,2380,2383,2399,2402,2416,2419,2423,2428,2431,2435,2441,2444,2448,2451,2463,2466,2476,2483,2486,2492,2495,2500,2506,2510,2512,2526,2529,2534,2540,2545,2551,2554,2560,2566,2570,2572,2581,2583,2595,2600,2605,2608,2613,2623,2637,2642,2646,2648,2660,2667,2673,2678,2684,2696,2699,2705,2708,2713,2716,2719,2810,2817,2820,2823,2826,2832,2837,2844,2850,2886,2892,2895,2934,2938,2941,2960,2963,2979,2982,2986,2989,2995,2998,3014,3017,3032,3036,3039,3053,3059,3062,3074,3078,3081,3095,3098,3101,3123],[10,11,12,16,17,20],"p",{},[13,14,15],"code",{},"CMakePresets.json"," 用來保存常用的 CMake 配置。它解決的問題是：不要每次都手寫一長串 ",[13,18,19],{},"cmake -S ... -B ... -G ... -D..."," 命令。",[10,22,23,24,26],{},"本模板的 ",[13,25,15],{}," 如下：",[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,433],"h2",{"id":433},"根字段",[435,436,438],"h3",{"id":437},"version",[13,439,437],{},[28,441,443],{"className":30,"code":442,"language":32,"meta":33,"style":33},"\"version\": 6\n",[13,444,445],{"__ignoreMap":33},[37,446,447,450,452],{"class":39,"line":40},[37,448,449],{"class":138},"\"version\"",[37,451,54],{"class":43},[37,453,454],{"class":50},"6\n",[10,456,457,458,460],{},"表示 ",[13,459,15],{}," 文件格式版本，不是項目版本。",[10,462,463],{},"可以填什麼：",[465,466,467,481],"table",{},[468,469,470],"thead",{},[471,472,473,478],"tr",{},[474,475,477],"th",{"align":476},"left","值",[474,479,480],{"align":476},"含義",[482,483,484,502],"tbody",{},[471,485,486,499],{},[487,488,489,492,493,492,496,498],"td",{"align":476},[13,490,491],{},"1","、",[13,494,495],{},"2",[13,497,80],{},"、...",[487,500,501],{"align":476},"CMake preset 文件格式版本",[471,503,504,508],{},[487,505,506],{"align":476},[13,507,57],{},[487,509,510],{"align":476},"本模板使用的版本，適合 CMake 3.25 及以上",[10,512,513],{},"注意：",[515,516,517,525,531],"ol",{},[518,519,520,521,524],"li",{},"這裏不是 ",[13,522,523],{},"cmake_template"," 的版本號。",[518,526,527,528,530],{},"如果想兼容更老的 CMake，要降低 ",[13,529,437],{},"，但某些字段可能不能再用。",[518,532,533],{},"如果本機 CMake 很新，也不一定要用最高 preset 版本；夠用即可。",[435,535,537],{"id":536},"cmakeminimumrequired",[13,538,539],{},"cmakeMinimumRequired",[28,541,543],{"className":30,"code":542,"language":32,"meta":33,"style":33},"\"cmakeMinimumRequired\": {\n  \"major\": 3,\n  \"minor\": 25,\n  \"patch\": 0\n}\n",[13,544,545,552,563,574,583],{"__ignoreMap":33},[37,546,547,550],{"class":39,"line":40},[37,548,549],{"class":138},"\"cmakeMinimumRequired\"",[37,551,69],{"class":43},[37,553,554,557,559,561],{"class":39,"line":47},[37,555,556],{"class":50},"  \"major\"",[37,558,54],{"class":43},[37,560,80],{"class":50},[37,562,60],{"class":43},[37,564,565,568,570,572],{"class":39,"line":63},[37,566,567],{"class":50},"  \"minor\"",[37,569,54],{"class":43},[37,571,93],{"class":50},[37,573,60],{"class":43},[37,575,576,579,581],{"class":39,"line":72},[37,577,578],{"class":50},"  \"patch\"",[37,580,54],{"class":43},[37,582,106],{"class":50},[37,584,585],{"class":39,"line":85},[37,586,429],{"class":43},[10,588,589],{},"表示讀取這個 preset 文件所需的最低 CMake 版本。",[10,591,463],{},[465,593,594,606],{},[468,595,596],{},[471,597,598,601,604],{},[474,599,600],{"align":476},"字段",[474,602,603],{"align":476},"示例",[474,605,480],{"align":476},[482,607,608,622,636],{},[471,609,610,615,619],{},[487,611,612],{"align":476},[13,613,614],{},"major",[487,616,617],{"align":476},[13,618,80],{},[487,620,621],{"align":476},"主版本號",[471,623,624,629,633],{},[487,625,626],{"align":476},[13,627,628],{},"minor",[487,630,631],{"align":476},[13,632,93],{},[487,634,635],{"align":476},"次版本號",[471,637,638,643,648],{},[487,639,640],{"align":476},[13,641,642],{},"patch",[487,644,645],{"align":476},[13,646,647],{},"0",[487,649,650],{"align":476},"補丁版本號",[10,652,653,654,657],{},"這個模板要求 CMake >= 3.25，是因為頂層 ",[13,655,656],{},"CMakeLists.txt"," 也寫了：",[28,659,663],{"className":660,"code":661,"language":662,"meta":33,"style":33},"language-cmake shiki shiki-themes github-light github-dark","cmake_minimum_required(VERSION 3.25)\n","cmake",[13,664,665],{"__ignoreMap":33},[37,666,667,671,674,678],{"class":39,"line":40},[37,668,670],{"class":669},"szBVR","cmake_minimum_required",[37,672,673],{"class":43},"(",[37,675,677],{"class":676},"sScJk","VERSION",[37,679,680],{"class":43}," 3.25)\n",[10,682,683],{},"二者最好保持一致。",[431,685,687],{"id":686},"configurepresets",[13,688,689],{},"configurePresets",[10,691,692,694],{},[13,693,689],{}," 是\"配置階段\"的 preset。",[10,696,697],{},"配置階段對應命令：",[28,699,703],{"className":700,"code":701,"language":702,"meta":33,"style":33},"language-bash shiki shiki-themes github-light github-dark","cmake --preset linux-debug\n","bash",[13,704,705],{"__ignoreMap":33},[37,706,707,709,712],{"class":39,"line":40},[37,708,662],{"class":676},[37,710,711],{"class":50}," --preset",[37,713,714],{"class":138}," linux-debug\n",[10,716,717],{},"它等價於告訴 CMake：",[515,719,720,723,726,729,732],{},[518,721,722],{},"使用哪個生成器。",[518,724,725],{},"構建目錄在哪裏。",[518,727,728],{},"構建類型是什麼。",[518,730,731],{},"安裝目錄在哪裏。",[518,733,734,735,738],{},"是否生成 ",[13,736,737],{},"compile_commands.json","。",[435,740,742],{"id":741},"name",[13,743,741],{},[28,745,747],{"className":30,"code":746,"language":32,"meta":33,"style":33},"\"name\": \"linux-debug\"\n",[13,748,749],{"__ignoreMap":33},[37,750,751,754,756],{"class":39,"line":40},[37,752,753],{"class":138},"\"name\"",[37,755,54],{"class":43},[37,757,381],{"class":138},[10,759,760],{},"preset 的機器可讀名稱。",[10,762,463],{},[465,764,765,775],{},[468,766,767],{},[471,768,769,772],{},[474,770,771],{"align":476},"寫法",[474,773,774],{"align":476},"説明",[482,776,777,787,797,810,820],{},[471,778,779,784],{},[487,780,781],{"align":476},[13,782,783],{},"linux-debug",[487,785,786],{"align":476},"本模板 Debug preset",[471,788,789,794],{},[487,790,791],{"align":476},[13,792,793],{},"linux-release",[487,795,796],{"align":476},"本模板 Release preset",[471,798,799,804],{},[487,800,801],{"align":476},[13,802,803],{},"debug",[487,805,806,807,809],{"align":476},"也可以，但不如 ",[13,808,783],{}," 清楚",[471,811,812,817],{},[487,813,814],{"align":476},[13,815,816],{},"gcc-debug",[487,818,819],{"align":476},"如果區分編譯器，可以這樣命名",[471,821,822,827],{},[487,823,824],{"align":476},[13,825,826],{},"clang-debug",[487,828,829],{"align":476},"如果添加 Clang preset，可以這樣命名",[10,831,832],{},"要求：",[515,834,835,838,848],{},[518,836,837],{},"同一個數組裏不能重名。",[518,839,840,843,844,847],{},[13,841,842],{},"buildPresets"," 裏的 ",[13,845,846],{},"configurePreset"," 要引用這裏的名字。",[518,849,850],{},"命令行使用的就是這個名字。",[10,852,853],{},"示例：",[28,855,856],{"className":700,"code":701,"language":702,"meta":33,"style":33},[13,857,858],{"__ignoreMap":33},[37,859,860,862,864],{"class":39,"line":40},[37,861,662],{"class":676},[37,863,711],{"class":50},[37,865,714],{"class":138},[435,867,869],{"id":868},"displayname",[13,870,871],{},"displayName",[28,873,875],{"className":30,"code":874,"language":32,"meta":33,"style":33},"\"displayName\": \"Linux Debug\"\n",[13,876,877],{"__ignoreMap":33},[37,878,879,882,884],{"class":39,"line":40},[37,880,881],{"class":138},"\"displayName\"",[37,883,54],{"class":43},[37,885,886],{"class":138},"\"Linux Debug\"\n",[10,888,889],{},"給人看的名字，主要用於 IDE 顯示，例如 VSCode CMake Tools 的 preset 列表。",[10,891,463],{},[465,893,894,902],{},[468,895,896],{},[471,897,898,900],{},[474,899,771],{"align":476},[474,901,774],{"align":476},[482,903,904,914,923,933],{},[471,905,906,911],{},[487,907,908],{"align":476},[13,909,910],{},"Linux Debug",[487,912,913],{"align":476},"清晰",[471,915,916,921],{},[487,917,918],{"align":476},[13,919,920],{},"Linux Release",[487,922,913],{"align":476},[471,924,925,930],{},[487,926,927],{"align":476},[13,928,929],{},"Debug",[487,931,932],{"align":476},"可以，但不區分平台",[471,934,935,940],{},[487,936,937],{"align":476},[13,938,939],{},"Fedora GCC Debug",[487,941,942],{"align":476},"如果 preset 很多，可以寫更具體",[10,944,945],{},"這個字段不影響實際構建邏輯。",[435,947,949],{"id":948},"generator",[13,950,948],{},[28,952,954],{"className":30,"code":953,"language":32,"meta":33,"style":33},"\"generator\": \"Ninja\"\n",[13,955,956],{"__ignoreMap":33},[37,957,958,961,963],{"class":39,"line":40},[37,959,960],{"class":138},"\"generator\"",[37,962,54],{"class":43},[37,964,965],{"class":138},"\"Ninja\"\n",[10,967,968],{},"指定 CMake 要生成什麼構建系統文件。",[10,970,971],{},"Linux 常見可選值：",[465,973,974,982],{},[468,975,976],{},[471,977,978,980],{},[474,979,477],{"align":476},[474,981,774],{"align":476},[482,983,984,994,1004],{},[471,985,986,991],{},[487,987,988],{"align":476},[13,989,990],{},"Ninja",[487,992,993],{"align":476},"推薦，速度快，輸出乾淨，適合 VSCode CMake Tools",[471,995,996,1001],{},[487,997,998],{"align":476},[13,999,1000],{},"Unix Makefiles",[487,1002,1003],{"align":476},"傳統 Makefile 工作流",[471,1005,1006,1011],{},[487,1007,1008],{"align":476},[13,1009,1010],{},"Ninja Multi-Config",[487,1012,1013],{"align":476},"多配置 Ninja，可同時管理 Debug \u002F Release",[10,1015,1016],{},"本模板只支持 Linux，並且使用 Ninja，所以固定寫：",[28,1018,1019],{"className":30,"code":953,"language":32,"meta":33,"style":33},[13,1020,1021],{"__ignoreMap":33},[37,1022,1023,1025,1027],{"class":39,"line":40},[37,1024,960],{"class":138},[37,1026,54],{"class":43},[37,1028,965],{"class":138},[10,1030,1031,1032,1034],{},"如果使用 ",[13,1033,1000],{},"，構建命令仍然可以用：",[28,1036,1038],{"className":700,"code":1037,"language":702,"meta":33,"style":33},"cmake --build --preset linux-debug\n",[13,1039,1040],{"__ignoreMap":33},[37,1041,1042,1044,1047,1049],{"class":39,"line":40},[37,1043,662],{"class":676},[37,1045,1046],{"class":50}," --build",[37,1048,711],{"class":50},[37,1050,714],{"class":138},[10,1052,1053],{},"但底層就不是 Ninja 了。",[435,1055,1057],{"id":1056},"binarydir",[13,1058,1059],{},"binaryDir",[28,1061,1063],{"className":30,"code":1062,"language":32,"meta":33,"style":33},"\"binaryDir\": \"${sourceDir}\u002Fbuild\u002Flinux-debug\"\n",[13,1064,1065],{"__ignoreMap":33},[37,1066,1067,1070,1072],{"class":39,"line":40},[37,1068,1069],{"class":138},"\"binaryDir\"",[37,1071,54],{"class":43},[37,1073,1074],{"class":138},"\"${sourceDir}\u002Fbuild\u002Flinux-debug\"\n",[10,1076,1077],{},"指定構建目錄。",[10,1079,463],{},[465,1081,1082,1090],{},[468,1083,1084],{},[471,1085,1086,1088],{},[474,1087,771],{"align":476},[474,1089,774],{"align":476},[482,1091,1092,1102,1113],{},[471,1093,1094,1099],{},[487,1095,1096],{"align":476},[13,1097,1098],{},"${sourceDir}\u002Fbuild\u002Flinux-debug",[487,1100,1101],{"align":476},"推薦，構建產物留在項目內的 build 子目錄",[471,1103,1104,1109],{},[487,1105,1106],{"align":476},[13,1107,1108],{},"${sourceDir}\u002Fbuild\u002Fdebug",[487,1110,806,1111,809],{"align":476},[13,1112,783],{},[471,1114,1115,1120],{},[487,1116,1117],{"align":476},[13,1118,1119],{},"\u002Ftmp\u002Fmy-build",[487,1121,1122],{"align":476},"可以放到項目外，但不適合作為模板默認值",[10,1124,1125],{},"常見宏：",[465,1127,1128,1137],{},[468,1129,1130],{},[471,1131,1132,1135],{},[474,1133,1134],{"align":476},"宏",[474,1136,480],{"align":476},[482,1138,1139,1149,1159],{},[471,1140,1141,1146],{},[487,1142,1143],{"align":476},[13,1144,1145],{},"${sourceDir}",[487,1147,1148],{"align":476},"項目源碼根目錄",[471,1150,1151,1156],{},[487,1152,1153],{"align":476},[13,1154,1155],{},"${presetName}",[487,1157,1158],{"align":476},"當前 preset 名稱",[471,1160,1161,1166],{},[487,1162,1163],{"align":476},[13,1164,1165],{},"${sourceParentDir}",[487,1167,1168],{"align":476},"源碼根目錄的父目錄",[10,1170,1171],{},"也可以寫成：",[28,1173,1175],{"className":30,"code":1174,"language":32,"meta":33,"style":33},"\"binaryDir\": \"${sourceDir}\u002Fbuild\u002F${presetName}\"\n",[13,1176,1177],{"__ignoreMap":33},[37,1178,1179,1181,1183],{"class":39,"line":40},[37,1180,1069],{"class":138},[37,1182,54],{"class":43},[37,1184,1185],{"class":138},"\"${sourceDir}\u002Fbuild\u002F${presetName}\"\n",[10,1187,1188,1189,1191],{},"這樣 ",[13,1190,783],{}," 會自動生成到：",[28,1193,1198],{"className":1194,"code":1196,"language":1197,"meta":33},[1195],"language-text","build\u002Flinux-debug\n","text",[13,1199,1196],{"__ignoreMap":33},[10,1201,1202],{},"本模板顯式寫出目錄，是為了讓初學時更直觀。",[435,1204,1206],{"id":1205},"cachevariables",[13,1207,1208],{},"cacheVariables",[28,1210,1212],{"className":30,"code":1211,"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,1213,1214,1221,1232,1243,1252],{"__ignoreMap":33},[37,1215,1216,1219],{"class":39,"line":40},[37,1217,1218],{"class":138},"\"cacheVariables\"",[37,1220,69],{"class":43},[37,1222,1223,1226,1228,1230],{"class":39,"line":47},[37,1224,1225],{"class":50},"  \"CMAKE_BUILD_TYPE\"",[37,1227,54],{"class":43},[37,1229,199],{"class":138},[37,1231,60],{"class":43},[37,1233,1234,1237,1239,1241],{"class":39,"line":63},[37,1235,1236],{"class":50},"  \"CMAKE_EXPORT_COMPILE_COMMANDS\"",[37,1238,54],{"class":43},[37,1240,212],{"class":138},[37,1242,60],{"class":43},[37,1244,1245,1248,1250],{"class":39,"line":72},[37,1246,1247],{"class":50},"  \"CMAKE_INSTALL_PREFIX\"",[37,1249,54],{"class":43},[37,1251,225],{"class":138},[37,1253,1254],{"class":39,"line":85},[37,1255,429],{"class":43},[10,1257,1258,1260,1261,1264],{},[13,1259,1208],{}," 等價於命令行中的 ",[13,1262,1263],{},"-D"," 參數。",[10,1266,1267],{},"例如：",[28,1269,1271],{"className":30,"code":1270,"language":32,"meta":33,"style":33},"\"CMAKE_BUILD_TYPE\": \"Debug\"\n",[13,1272,1273],{"__ignoreMap":33},[37,1274,1275,1278,1280],{"class":39,"line":40},[37,1276,1277],{"class":138},"\"CMAKE_BUILD_TYPE\"",[37,1279,54],{"class":43},[37,1281,1282],{"class":138},"\"Debug\"\n",[10,1284,1285],{},"等價於：",[28,1287,1289],{"className":700,"code":1288,"language":702,"meta":33,"style":33},"-DCMAKE_BUILD_TYPE=Debug\n",[13,1290,1291],{"__ignoreMap":33},[37,1292,1293,1296,1299],{"class":39,"line":40},[37,1294,1295],{"class":43},"-DCMAKE_BUILD_TYPE",[37,1297,1298],{"class":669},"=",[37,1300,1301],{"class":138},"Debug\n",[431,1303,1305],{"id":1304},"常用-cache-變量","常用 cache 變量",[435,1307,1309],{"id":1308},"cmake_build_type",[13,1310,1311],{},"CMAKE_BUILD_TYPE",[28,1313,1314],{"className":30,"code":1270,"language":32,"meta":33,"style":33},[13,1315,1316],{"__ignoreMap":33},[37,1317,1318,1320,1322],{"class":39,"line":40},[37,1319,1277],{"class":138},[37,1321,54],{"class":43},[37,1323,1282],{"class":138},[10,1325,1326,1327,1329,1330,1332],{},"單配置生成器中使用的構建類型。",[13,1328,990],{}," 和 ",[13,1331,1000],{}," 都屬於常見的單配置生成器。",[10,1334,463],{},[465,1336,1337,1346],{},[468,1338,1339],{},[471,1340,1341,1343],{},[474,1342,477],{"align":476},[474,1344,1345],{"align":476},"作用",[482,1347,1348,1361,1371,1381],{},[471,1349,1350,1354],{},[487,1351,1352],{"align":476},[13,1353,929],{},[487,1355,1356,1357,1360],{"align":476},"調試構建，通常帶 ",[13,1358,1359],{},"-g","，優化較少",[471,1362,1363,1368],{},[487,1364,1365],{"align":476},[13,1366,1367],{},"Release",[487,1369,1370],{"align":476},"發佈構建，通常開啓優化",[471,1372,1373,1378],{},[487,1374,1375],{"align":476},[13,1376,1377],{},"RelWithDebInfo",[487,1379,1380],{"align":476},"優化 + 調試信息",[471,1382,1383,1388],{},[487,1384,1385],{"align":476},[13,1386,1387],{},"MinSizeRel",[487,1389,1390],{"align":476},"優化體積",[10,1392,1393],{},"常用選擇：",[465,1395,1396,1406],{},[468,1397,1398],{},[471,1399,1400,1403],{},[474,1401,1402],{"align":476},"場景",[474,1404,1405],{"align":476},"推薦",[482,1407,1408,1417,1426,1435],{},[471,1409,1410,1413],{},[487,1411,1412],{"align":476},"寫代碼、調試斷點",[487,1414,1415],{"align":476},[13,1416,929],{},[471,1418,1419,1422],{},[487,1420,1421],{"align":476},"發佈、性能測試",[487,1423,1424],{"align":476},[13,1425,1367],{},[471,1427,1428,1431],{},[487,1429,1430],{"align":476},"性能測試但還想保留符號",[487,1432,1433],{"align":476},[13,1434,1377],{},[471,1436,1437,1440],{},[487,1438,1439],{"align":476},"嵌入式或體積敏感",[487,1441,1442],{"align":476},[13,1443,1387],{},[435,1445,1447],{"id":1446},"cmake_export_compile_commands",[13,1448,1449],{},"CMAKE_EXPORT_COMPILE_COMMANDS",[28,1451,1453],{"className":30,"code":1452,"language":32,"meta":33,"style":33},"\"CMAKE_EXPORT_COMPILE_COMMANDS\": \"ON\"\n",[13,1454,1455],{"__ignoreMap":33},[37,1456,1457,1460,1462],{"class":39,"line":40},[37,1458,1459],{"class":138},"\"CMAKE_EXPORT_COMPILE_COMMANDS\"",[37,1461,54],{"class":43},[37,1463,1464],{"class":138},"\"ON\"\n",[10,1466,734,1467,738],{},[13,1468,737],{},[10,1470,463],{},[465,1472,1473,1481],{},[468,1474,1475],{},[471,1476,1477,1479],{},[474,1478,477],{"align":476},[474,1480,1345],{"align":476},[482,1482,1483,1495],{},[471,1484,1485,1490],{},[487,1486,1487],{"align":476},[13,1488,1489],{},"ON",[487,1491,1492,1493],{"align":476},"生成 ",[13,1494,737],{},[471,1496,1497,1502],{},[487,1498,1499],{"align":476},[13,1500,1501],{},"OFF",[487,1503,1504],{"align":476},"不生成",[10,1506,1507,1509,1510,1513],{},[13,1508,737],{}," 記錄每個源文件真實的編譯命令。",[13,1511,1512],{},"clangd","、VSCode、很多靜態分析工具都會用它來獲得 include 路徑、宏定義、編譯標準等信息。",[10,1515,1516],{},"建議模板裏固定開啓：",[28,1518,1519],{"className":30,"code":1452,"language":32,"meta":33,"style":33},[13,1520,1521],{"__ignoreMap":33},[37,1522,1523,1525,1527],{"class":39,"line":40},[37,1524,1459],{"class":138},[37,1526,54],{"class":43},[37,1528,1464],{"class":138},[1530,1531,1533,1534],"h4",{"id":1532},"讓-clangd-找到-compile_commandsjson","讓 clangd 找到 ",[13,1535,737],{},[10,1537,1538,1539,1541],{},"僅僅生成 ",[13,1540,737],{},"，不代表 clangd 一定能自動找到它。",[10,1543,1544],{},"在 VSCode 中使用這種方式前，需要安裝 LLVM 官方的 clangd 擴展。\nCMake Tools 負責配置、構建和選擇 target，clangd 則負責代碼補全、\n跳轉定義、語義檢查等編輯功能，它們不是同一個擴展。",[10,1546,1547],{},"這個模板把 Debug 構建目錄設置為：",[28,1549,1552],{"className":1550,"code":1551,"language":1197,"meta":33},[1195],"build\u002Flinux-debug\u002F\n",[13,1553,1551],{"__ignoreMap":33},[10,1555,1556],{},"因此執行：",[28,1558,1559],{"className":700,"code":701,"language":702,"meta":33,"style":33},[13,1560,1561],{"__ignoreMap":33},[37,1562,1563,1565,1567],{"class":39,"line":40},[37,1564,662],{"class":676},[37,1566,711],{"class":50},[37,1568,714],{"class":138},[10,1570,1571],{},"之後，編譯數據庫位於：",[28,1573,1576],{"className":1574,"code":1575,"language":1197,"meta":33},[1195],"build\u002Flinux-debug\u002Fcompile_commands.json\n",[13,1577,1575],{"__ignoreMap":33},[10,1579,1580,1581,1583,1584,1587,1588,1591],{},"clangd 默認會從當前源文件所在目錄逐級向上尋找\n",[13,1582,737],{},"。它通常能找到項目根目錄或 ",[13,1585,1586],{},"build\u002F"," 直屬目錄\n中的數據庫，但不一定會繼續搜索 ",[13,1589,1590],{},"build\u002Flinux-debug\u002F"," 這樣的多層\npreset 目錄。",[10,1593,1594],{},"如果 clangd 沒有找到數據庫，它會進入 fallback 模式，只用少量默認\n參數分析源文件。這時即使 CMake 可以正常編譯，VSCode 中仍可能出現：",[515,1596,1597,1600,1603,1606],{},[518,1598,1599],{},"項目頭文件顯示找不到。",[518,1601,1602],{},"Eigen、OpenCV 等第三方庫顯示找不到。",[518,1604,1605],{},"C++ 標準識別錯誤，例如工程使用 C++23，clangd 卻按照 C++17 分析。",[518,1607,1608],{},"跳轉定義、自動補全和錯誤提示不準確。",[10,1610,1611,1612,1615],{},"推薦在項目根目錄創建 ",[13,1613,1614],{},".clangd","：",[28,1617,1621],{"className":1618,"code":1619,"language":1620,"meta":33,"style":33},"language-yaml shiki shiki-themes github-light github-dark","CompileFlags:\n  CompilationDatabase: build\u002Flinux-debug\n","yaml",[13,1622,1623,1632],{"__ignoreMap":33},[37,1624,1625,1629],{"class":39,"line":40},[37,1626,1628],{"class":1627},"s9eBZ","CompileFlags",[37,1630,1631],{"class":43},":\n",[37,1633,1634,1637,1639],{"class":39,"line":47},[37,1635,1636],{"class":1627},"  CompilationDatabase",[37,1638,54],{"class":43},[37,1640,1196],{"class":138},[10,1642,1643],{},"目錄結構會變成：",[28,1645,1648],{"className":1646,"code":1647,"language":1197,"meta":33},[1195],".\n├── .clangd\n├── CMakeLists.txt\n├── CMakePresets.json\n├── build\u002F\n│   └── linux-debug\u002F\n│       └── compile_commands.json\n└── src\u002F\n",[13,1649,1647],{"__ignoreMap":33},[10,1651,1652,1655,1656,1658],{},[13,1653,1654],{},"CompilationDatabase"," 使用相對於 ",[13,1657,1614],{}," 所在目錄的路徑，所以不要\n寫某個用户電腦上的絕對路徑。這個文件只保存項目通用配置，可以提交到\nGit。",[10,1660,1661,1662,1664,1665,1667],{},"注意，",[13,1663,1614],{}," 不會生成編譯數據庫。第一次使用工程，或者修改了\n",[13,1666,656],{},"、編譯選項、依賴和 preset 後，仍然要重新執行：",[28,1669,1670],{"className":700,"code":701,"language":702,"meta":33,"style":33},[13,1671,1672],{"__ignoreMap":33},[37,1673,1674,1676,1678],{"class":39,"line":40},[37,1675,662],{"class":676},[37,1677,711],{"class":50},[37,1679,714],{"class":138},[10,1681,1682,1683,1685],{},"或者在 VSCode CMake Tools 中選擇 ",[13,1684,783],{}," 並點擊 Configure。",[10,1687,1688,1689,1691],{},"如果 ",[13,1690,1614],{}," 創建後沒有立即生效，可以在 VSCode 命令面板執行：",[28,1693,1696],{"className":1694,"code":1695,"language":1197,"meta":33},[1195],"clangd: Restart language server\n",[13,1697,1695],{"__ignoreMap":33},[10,1699,1700,1701,1704],{},"也可以關閉並重新打開當前 ",[13,1702,1703],{},".cpp"," 文件。",[10,1706,1707],{},"如果同時安裝了 Microsoft C\u002FC++ 擴展，並且編輯器出現兩套重複的錯誤\n提示，可以保留該擴展提供的 GDB 調試功能，同時關閉它的 IntelliSense，\n讓 clangd 獨立負責代碼分析。這屬於個人 VSCode 設置，不需要寫入 CMake\n模板。",[1530,1709,1711],{"id":1710},"檢查-clangd-是否真的生效","檢查 clangd 是否真的生效",[10,1713,1714],{},"在 VSCode 中打開：",[28,1716,1719],{"className":1717,"code":1718,"language":1197,"meta":33},[1195],"查看 -> 输出 -> clangd\n",[13,1720,1718],{"__ignoreMap":33},[10,1722,1723],{},"正常情況下應當看到類似內容：",[28,1725,1728],{"className":1726,"code":1727,"language":1197,"meta":33},[1195],"Loaded compilation database from ...\u002Fbuild\u002Flinux-debug\u002Fcompile_commands.json\nCompile command from CDB is: ...\n",[13,1729,1727],{"__ignoreMap":33},[10,1731,1732],{},"如果看到：",[28,1734,1737],{"className":1735,"code":1736,"language":1197,"meta":33},[1195],"Failed to find compilation database\ncommand clangd fallback\n",[13,1738,1736],{"__ignoreMap":33},[10,1740,1741],{},"説明 clangd 仍然沒有讀到編譯數據庫。依次檢查：",[515,1743,1744,1747,1752,1758,1764],{},[518,1745,1746],{},"VSCode 打開的是否為項目根目錄。",[518,1748,1749,1751],{},[13,1750,1614],{}," 是否位於項目根目錄。",[518,1753,1754,1755,738],{},"是否已經執行過 ",[13,1756,1757],{},"cmake --preset linux-debug",[518,1759,1760,1763],{},[13,1761,1762],{},"build\u002Flinux-debug\u002Fcompile_commands.json"," 是否真實存在。",[518,1765,1766,1768,1769,1771],{},[13,1767,1614],{}," 中的目錄名是否與 ",[13,1770,1059],{}," 完全一致。",[10,1773,1774,1775,1777],{},"如果系統終端中可以直接使用 ",[13,1776,1512],{},"，還可以檢查單個源文件：",[28,1779,1781],{"className":700,"code":1780,"language":702,"meta":33,"style":33},"clangd --check=src\u002Fmain.cpp\n",[13,1782,1783],{"__ignoreMap":33},[37,1784,1785,1787],{"class":39,"line":40},[37,1786,1512],{"class":676},[37,1788,1789],{"class":50}," --check=src\u002Fmain.cpp\n",[10,1791,1792,1793,1795],{},"輸出中應當顯示它加載了 ",[13,1794,1762],{},"，\n並使用 CMake 生成的 include 路徑、宏定義和 C++ 標準。",[1530,1797,1799],{"id":1798},"使用-release-數據庫","使用 Release 數據庫",[10,1801,1802],{},"如果希望 clangd 按照 Release 配置分析，可以改成：",[28,1804,1806],{"className":1618,"code":1805,"language":1620,"meta":33,"style":33},"CompileFlags:\n  CompilationDatabase: build\u002Flinux-release\n",[13,1807,1808,1814],{"__ignoreMap":33},[37,1809,1810,1812],{"class":39,"line":40},[37,1811,1628],{"class":1627},[37,1813,1631],{"class":43},[37,1815,1816,1818,1820],{"class":39,"line":47},[37,1817,1636],{"class":1627},[37,1819,54],{"class":43},[37,1821,1822],{"class":138},"build\u002Flinux-release\n",[10,1824,1825],{},"並先生成對應數據庫：",[28,1827,1829],{"className":700,"code":1828,"language":702,"meta":33,"style":33},"cmake --preset linux-release\n",[13,1830,1831],{"__ignoreMap":33},[37,1832,1833,1835,1837],{"class":39,"line":40},[37,1834,662],{"class":676},[37,1836,711],{"class":50},[37,1838,1839],{"class":138}," linux-release\n",[10,1841,1842,1843,1846,1847,1849],{},"日常開發通常使用 ",[13,1844,1845],{},"build\u002Flinux-debug"," 即可。不要同時讓 ",[13,1848,1614],{}," 指向\n一個尚未生成或已經過期的構建目錄。",[435,1851,1853],{"id":1852},"cmake_install_prefix",[13,1854,1855],{},"CMAKE_INSTALL_PREFIX",[28,1857,1859],{"className":30,"code":1858,"language":32,"meta":33,"style":33},"\"CMAKE_INSTALL_PREFIX\": \"${sourceDir}\u002Finstall\u002Flinux-debug\"\n",[13,1860,1861],{"__ignoreMap":33},[37,1862,1863,1866,1868],{"class":39,"line":40},[37,1864,1865],{"class":138},"\"CMAKE_INSTALL_PREFIX\"",[37,1867,54],{"class":43},[37,1869,225],{"class":138},[10,1871,1872],{},"指定安裝目錄。",[10,1874,463],{},[465,1876,1877,1885],{},[468,1878,1879],{},[471,1880,1881,1883],{},[474,1882,771],{"align":476},[474,1884,774],{"align":476},[482,1886,1887,1897,1907,1917],{},[471,1888,1889,1894],{},[487,1890,1891],{"align":476},[13,1892,1893],{},"${sourceDir}\u002Finstall\u002Flinux-debug",[487,1895,1896],{"align":476},"本模板 Debug 安裝目錄",[471,1898,1899,1904],{},[487,1900,1901],{"align":476},[13,1902,1903],{},"${sourceDir}\u002Finstall\u002Flinux-release",[487,1905,1906],{"align":476},"本模板 Release 安裝目錄",[471,1908,1909,1914],{},[487,1910,1911],{"align":476},[13,1912,1913],{},"\u002Fusr\u002Flocal",[487,1915,1916],{"align":476},"系統級安裝路徑，需要權限，不適合作為模板默認",[471,1918,1919,1924],{},[487,1920,1921],{"align":476},[13,1922,1923],{},"\u002Fopt\u002Fmy_project",[487,1925,1926],{"align":476},"系統級或部署路徑",[10,1928,1929],{},"本模板把安裝目錄放在項目內，是為了方便學習和刪除。",[10,1931,1932],{},"安裝後運行：",[28,1934,1936],{"className":700,"code":1935,"language":702,"meta":33,"style":33},".\u002Finstall\u002Flinux-debug\u002Fbin\u002Fcmake_template\n",[13,1937,1938],{"__ignoreMap":33},[37,1939,1940],{"class":39,"line":40},[37,1941,1935],{"class":676},[431,1943,1945],{"id":1944},"buildpresets",[13,1946,842],{},[10,1948,1949,1951],{},[13,1950,842],{}," 是\"構建階段\"的 preset。",[10,1953,1954],{},"構建階段對應命令：",[28,1956,1957],{"className":700,"code":1037,"language":702,"meta":33,"style":33},[13,1958,1959],{"__ignoreMap":33},[37,1960,1961,1963,1965,1967],{"class":39,"line":40},[37,1962,662],{"class":676},[37,1964,1046],{"class":50},[37,1966,711],{"class":50},[37,1968,714],{"class":138},[10,1970,1971],{},"本模板寫法：",[28,1973,1975],{"className":30,"code":1974,"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,1976,1977,1984,1989,2000,2009,2013,2017,2027,2035,2040],{"__ignoreMap":33},[37,1978,1979,1982],{"class":39,"line":40},[37,1980,1981],{"class":138},"\"buildPresets\"",[37,1983,121],{"class":43},[37,1985,1986],{"class":39,"line":47},[37,1987,1988],{"class":43},"  {\n",[37,1990,1991,1994,1996,1998],{"class":39,"line":63},[37,1992,1993],{"class":50},"    \"name\"",[37,1995,54],{"class":43},[37,1997,139],{"class":138},[37,1999,60],{"class":43},[37,2001,2002,2005,2007],{"class":39,"line":72},[37,2003,2004],{"class":50},"    \"configurePreset\"",[37,2006,54],{"class":43},[37,2008,381],{"class":138},[37,2010,2011],{"class":39,"line":85},[37,2012,112],{"class":43},[37,2014,2015],{"class":39,"line":98},[37,2016,1988],{"class":43},[37,2018,2019,2021,2023,2025],{"class":39,"line":109},[37,2020,1993],{"class":50},[37,2022,54],{"class":43},[37,2024,252],{"class":138},[37,2026,60],{"class":43},[37,2028,2029,2031,2033],{"class":39,"line":115},[37,2030,2004],{"class":50},[37,2032,54],{"class":43},[37,2034,412],{"class":138},[37,2036,2037],{"class":39,"line":124},[37,2038,2039],{"class":43},"  }\n",[37,2041,2042],{"class":39,"line":130},[37,2043,2044],{"class":43},"]\n",[435,2046,2048],{"id":2047},"name-1",[13,2049,741],{},[28,2051,2052],{"className":30,"code":746,"language":32,"meta":33,"style":33},[13,2053,2054],{"__ignoreMap":33},[37,2055,2056,2058,2060],{"class":39,"line":40},[37,2057,753],{"class":138},[37,2059,54],{"class":43},[37,2061,381],{"class":138},[10,2063,2064],{},"構建 preset 名稱。",[10,2066,2067],{},"一般建議和對應的 configure preset 同名，這樣命令比較一致：",[28,2069,2071],{"className":700,"code":2070,"language":702,"meta":33,"style":33},"cmake --preset linux-debug\ncmake --build --preset linux-debug\n",[13,2072,2073,2081],{"__ignoreMap":33},[37,2074,2075,2077,2079],{"class":39,"line":40},[37,2076,662],{"class":676},[37,2078,711],{"class":50},[37,2080,714],{"class":138},[37,2082,2083,2085,2087,2089],{"class":39,"line":47},[37,2084,662],{"class":676},[37,2086,1046],{"class":50},[37,2088,711],{"class":50},[37,2090,714],{"class":138},[435,2092,2094],{"id":2093},"configurepreset",[13,2095,846],{},[28,2097,2099],{"className":30,"code":2098,"language":32,"meta":33,"style":33},"\"configurePreset\": \"linux-debug\"\n",[13,2100,2101],{"__ignoreMap":33},[37,2102,2103,2106,2108],{"class":39,"line":40},[37,2104,2105],{"class":138},"\"configurePreset\"",[37,2107,54],{"class":43},[37,2109,381],{"class":138},[10,2111,2112],{},"表示這個 build preset 使用哪個 configure preset 生成的構建目錄。",[10,2114,463],{},[465,2116,2117,2125],{},[468,2118,2119],{},[471,2120,2121,2123],{},[474,2122,477],{"align":476},[474,2124,774],{"align":476},[482,2126,2127,2136],{},[471,2128,2129,2133],{},[487,2130,2131],{"align":476},[13,2132,783],{},[487,2134,2135],{"align":476},"使用 Debug 構建目錄",[471,2137,2138,2142],{},[487,2139,2140],{"align":476},[13,2141,793],{},[487,2143,2144],{"align":476},"使用 Release 構建目錄",[10,2146,2147,2148,2150,2151,738],{},"必須對應 ",[13,2149,689],{}," 中已經存在的 ",[13,2152,741],{},[431,2154,2155],{"id":2155},"常見可擴展字段",[10,2157,2158],{},"初學時可以先不用，但以後可能會見到。",[435,2160,2162],{"id":2161},"description",[13,2163,2161],{},[10,2165,2166],{},"給 preset 添加更長的説明。",[28,2168,2170],{"className":30,"code":2169,"language":32,"meta":33,"style":33},"\"description\": \"Debug build for Linux using Ninja\"\n",[13,2171,2172],{"__ignoreMap":33},[37,2173,2174,2177,2179],{"class":39,"line":40},[37,2175,2176],{"class":138},"\"description\"",[37,2178,54],{"class":43},[37,2180,2181],{"class":138},"\"Debug build for Linux using Ninja\"\n",[435,2183,2185],{"id":2184},"hidden",[13,2186,2184],{},[10,2188,2189],{},"隱藏某個 preset，不直接給用户選擇，通常用於繼承。",[28,2191,2193],{"className":30,"code":2192,"language":32,"meta":33,"style":33},"\"hidden\": true\n",[13,2194,2195],{"__ignoreMap":33},[37,2196,2197,2200,2202],{"class":39,"line":40},[37,2198,2199],{"class":138},"\"hidden\"",[37,2201,54],{"class":43},[37,2203,2204],{"class":50},"true\n",[435,2206,2208],{"id":2207},"inherits",[13,2209,2207],{},[10,2211,2212],{},"繼承另一個 preset，減少重複。",[28,2214,2216],{"className":30,"code":2215,"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,2217,2218,2222,2233,2245,2252,2261,2265],{"__ignoreMap":33},[37,2219,2220],{"class":39,"line":40},[37,2221,44],{"class":43},[37,2223,2224,2227,2229,2231],{"class":39,"line":47},[37,2225,2226],{"class":50},"  \"name\"",[37,2228,54],{"class":43},[37,2230,139],{"class":138},[37,2232,60],{"class":43},[37,2234,2235,2238,2240,2243],{"class":39,"line":63},[37,2236,2237],{"class":50},"  \"inherits\"",[37,2239,54],{"class":43},[37,2241,2242],{"class":138},"\"linux-base\"",[37,2244,60],{"class":43},[37,2246,2247,2250],{"class":39,"line":72},[37,2248,2249],{"class":50},"  \"cacheVariables\"",[37,2251,69],{"class":43},[37,2253,2254,2257,2259],{"class":39,"line":85},[37,2255,2256],{"class":50},"    \"CMAKE_BUILD_TYPE\"",[37,2258,54],{"class":43},[37,2260,1282],{"class":138},[37,2262,2263],{"class":39,"line":98},[37,2264,2039],{"class":43},[37,2266,2267],{"class":39,"line":109},[37,2268,429],{"class":43},[435,2270,2272],{"id":2271},"environment",[13,2273,2271],{},[10,2275,2276],{},"設置環境變量。",[28,2278,2280],{"className":30,"code":2279,"language":32,"meta":33,"style":33},"\"environment\": {\n  \"CC\": \"\u002Fusr\u002Fbin\u002Fgcc\",\n  \"CXX\": \"\u002Fusr\u002Fbin\u002Fg++\"\n}\n",[13,2281,2282,2289,2301,2311],{"__ignoreMap":33},[37,2283,2284,2287],{"class":39,"line":40},[37,2285,2286],{"class":138},"\"environment\"",[37,2288,69],{"class":43},[37,2290,2291,2294,2296,2299],{"class":39,"line":47},[37,2292,2293],{"class":50},"  \"CC\"",[37,2295,54],{"class":43},[37,2297,2298],{"class":138},"\"\u002Fusr\u002Fbin\u002Fgcc\"",[37,2300,60],{"class":43},[37,2302,2303,2306,2308],{"class":39,"line":63},[37,2304,2305],{"class":50},"  \"CXX\"",[37,2307,54],{"class":43},[37,2309,2310],{"class":138},"\"\u002Fusr\u002Fbin\u002Fg++\"\n",[37,2312,2313],{"class":39,"line":72},[37,2314,429],{"class":43},[10,2316,2317],{},"一般不建議模板默認寫死編譯器，除非你的項目明確要求某個工具鏈。",[435,2319,2321],{"id":2320},"targets",[13,2322,2320],{},[10,2324,2325],{},"指定默認構建哪些 target。",[28,2327,2329],{"className":30,"code":2328,"language":32,"meta":33,"style":33},"\"targets\": [\"cmake_template\"]\n",[13,2330,2331],{"__ignoreMap":33},[37,2332,2333,2336,2339,2342],{"class":39,"line":40},[37,2334,2335],{"class":138},"\"targets\"",[37,2337,2338],{"class":43},": [",[37,2340,2341],{"class":138},"\"cmake_template\"",[37,2343,2044],{"class":43},[10,2345,2346],{},"如果不寫，默認構建全部 target。",[435,2348,2350],{"id":2349},"jobs",[13,2351,2349],{},[10,2353,2354],{},"指定並行編譯數量。",[28,2356,2358],{"className":30,"code":2357,"language":32,"meta":33,"style":33},"\"jobs\": 8\n",[13,2359,2360],{"__ignoreMap":33},[37,2361,2362,2365,2367],{"class":39,"line":40},[37,2363,2364],{"class":138},"\"jobs\"",[37,2366,54],{"class":43},[37,2368,2369],{"class":50},"8\n",[10,2371,2372],{},"不寫時由底層構建工具決定。",[431,2374,2376,2377],{"id":2375},"為什麼沒有-installpresets","為什麼沒有 ",[13,2378,2379],{},"installPresets",[10,2381,2382],{},"很多人會猜測可以寫：",[28,2384,2386],{"className":700,"code":2385,"language":702,"meta":33,"style":33},"cmake --install --preset linux-debug\n",[13,2387,2388],{"__ignoreMap":33},[37,2389,2390,2392,2395,2397],{"class":39,"line":40},[37,2391,662],{"class":676},[37,2393,2394],{"class":50}," --install",[37,2396,711],{"class":50},[37,2398,714],{"class":138},[10,2400,2401],{},"但常見 CMake preset 文件並不使用這個根字段。這個模板採用更通用的安裝命令：",[28,2403,2405],{"className":700,"code":2404,"language":702,"meta":33,"style":33},"cmake --install build\u002Flinux-debug\n",[13,2406,2407],{"__ignoreMap":33},[37,2408,2409,2411,2413],{"class":39,"line":40},[37,2410,662],{"class":676},[37,2412,2394],{"class":50},[37,2414,2415],{"class":138}," build\u002Flinux-debug\n",[10,2417,2418],{},"安裝命令需要傳入構建目錄，因為安裝規則是在 configure 階段生成到構建目錄裏的。",[431,2420,2422],{"id":2421},"vscode-cmake-tools-工作流","VSCode CMake Tools 工作流",[10,2424,2425,2426,738],{},"安裝 VSCode 的 CMake Tools 擴展後，它會自動識別 ",[13,2427,15],{},[10,2429,2430],{},"這一節把命令行操作和 VSCode 圖形界面操作對應起來。",[435,2432,2434],{"id":2433},"打開-cmake-面板","打開 CMake 面板",[10,2436,2437,2438,738],{},"用 VSCode 打開工程根目錄後，點擊左側邊欄的 ",[13,2439,2440],{},"CMake",[10,2442,2443],{},"如果 CMake Tools 正常識別工程，你會看到 preset、Configure、Build、運行 target 等入口。",[435,2445,2447],{"id":2446},"configure","Configure",[10,2449,2450],{},"命令行：",[28,2452,2453],{"className":700,"code":701,"language":702,"meta":33,"style":33},[13,2454,2455],{"__ignoreMap":33},[37,2456,2457,2459,2461],{"class":39,"line":40},[37,2458,662],{"class":676},[37,2460,711],{"class":50},[37,2462,714],{"class":138},[10,2464,2465],{},"在 VSCode 圖形界面中，對應的是：",[515,2467,2468,2471],{},[518,2469,2470],{},"點擊 Configure。",[518,2472,2473,2474,738],{},"選擇 ",[13,2475,910],{},[10,2477,2478],{},[2479,2480],"img",{"alt":2481,"src":2482},"alt text","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780705995297.webp",[10,2484,2485],{},"這一步會讀取：",[28,2487,2490],{"className":2488,"code":2489,"language":1197,"meta":33},[1195],"CMakePresets.json\nCMakeLists.txt\n",[13,2491,2489],{"__ignoreMap":33},[10,2493,2494],{},"並生成：",[28,2496,2498],{"className":2497,"code":1551,"language":1197,"meta":33},[1195],[13,2499,1551],{"__ignoreMap":33},[10,2501,2502,2503,2505],{},"如果你改了 ",[13,2504,656],{},"、新增了源文件、修改了第三方依賴，通常需要重新 Configure。",[435,2507,2509],{"id":2508},"build","Build",[10,2511,2450],{},[28,2513,2514],{"className":700,"code":1037,"language":702,"meta":33,"style":33},[13,2515,2516],{"__ignoreMap":33},[37,2517,2518,2520,2522,2524],{"class":39,"line":40},[37,2519,662],{"class":676},[37,2521,1046],{"class":50},[37,2523,711],{"class":50},[37,2525,714],{"class":138},[10,2527,2528],{},"在 VSCode 圖形界面中，CMake Tools 會在 Configure 後識別對應的 build preset。",[10,2530,2531],{},[2479,2532],{"alt":2481,"src":2533},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780706149481.webp",[10,2535,2536,2537,2539],{},"然後點擊左下角或 CMake 面板裏的 ",[13,2538,2509],{}," 按鈕：",[10,2541,2542],{},[2479,2543],{"alt":2481,"src":2544},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707106120.webp",[10,2546,2547,2548,2550],{},"這一步會編譯 ",[13,2549,1703],{}," 文件，並生成 build 目錄裏的可執行文件和動態庫。",[10,2552,2553],{},"本模板的 Debug 可執行文件通常在：",[28,2555,2558],{"className":2556,"code":2557,"language":1197,"meta":33},[1195],"build\u002Flinux-debug\u002Fsrc\u002Fcmake_template\n",[13,2559,2557],{"__ignoreMap":33},[10,2561,2562,2563,2565],{},"如果你只是修改了普通 ",[13,2564,1703],{}," 代碼，一般只需要重新 Build，不一定要重新 Configure。",[435,2567,2569],{"id":2568},"運行-build-目錄裏的程序","運行 build 目錄裏的程序",[10,2571,2450],{},[28,2573,2575],{"className":700,"code":2574,"language":702,"meta":33,"style":33},".\u002Fbuild\u002Flinux-debug\u002Fsrc\u002Fcmake_template\n",[13,2576,2577],{"__ignoreMap":33},[37,2578,2579],{"class":39,"line":40},[37,2580,2574],{"class":676},[10,2582,2465],{},[515,2584,2585,2588,2592],{},[518,2586,2587],{},"選擇運行\u002F調試 target。",[518,2589,2473,2590,738],{},[13,2591,523],{},[518,2593,2594],{},"點擊運行按鈕。",[10,2596,2597],{},[2479,2598],{"alt":2481,"src":2599},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707152235.webp",[10,2601,2602],{},[2479,2603],{"alt":2481,"src":2604},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707202465.webp",[10,2606,2607],{},"運行後，終端裏會看到程序輸出。",[10,2609,2610],{},[2479,2611],{"alt":2481,"src":2612},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707302786.webp",[10,2614,2615,2616,2618,2619,2622],{},"如果你要斷點調試，就點擊 CMake Tools 提供的 ",[13,2617,929],{}," 按鈕；如果只是直接運行程序，就點擊 ",[13,2620,2621],{},"Launch"," 按鈕。",[10,2624,2625,2626,2628,2629,1329,2631,2633,2634,2636],{},"除了上面的操作入口，VSCode 底部狀態欄中，",[13,2627,2509],{}," 按鈕旁邊也有 ",[13,2630,929],{},[13,2632,2621],{}," 快捷按鈕。選擇好 ",[13,2635,523],{}," target 並完成構建後，可以直接點擊這裏運行或調試程序。",[10,2638,2639],{},[2479,2640],{"alt":2481,"src":2641},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780715507074.webp",[435,2643,2645],{"id":2644},"install","Install",[10,2647,2450],{},[28,2649,2650],{"className":700,"code":2404,"language":702,"meta":33,"style":33},[13,2651,2652],{"__ignoreMap":33},[37,2653,2654,2656,2658],{"class":39,"line":40},[37,2655,662],{"class":676},[37,2657,2394],{"class":50},[37,2659,2415],{"class":138},[10,2661,2662,2663,2666],{},"在 VSCode 圖形界面中，可以按 ",[13,2664,2665],{},"Ctrl+Shift+P"," 打開命令面板，然後輸入：",[28,2668,2671],{"className":2669,"code":2670,"language":1197,"meta":33},[1195],"CMake: Install\n",[13,2672,2670],{"__ignoreMap":33},[10,2674,2675],{},[2479,2676],{"alt":2481,"src":2677},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002F1780707509033.webp",[10,2679,2680,2681,2683],{},"如果當前選擇的是 ",[13,2682,783],{}," preset，它等同於：",[28,2685,2686],{"className":700,"code":2404,"language":702,"meta":33,"style":33},[13,2687,2688],{"__ignoreMap":33},[37,2689,2690,2692,2694],{"class":39,"line":40},[37,2691,662],{"class":676},[37,2693,2394],{"class":50},[37,2695,2415],{"class":138},[10,2697,2698],{},"安裝後的程序在：",[28,2700,2703],{"className":2701,"code":2702,"language":1197,"meta":33},[1195],"install\u002Flinux-debug\u002Fbin\u002Fcmake_template\n",[13,2704,2702],{"__ignoreMap":33},[10,2706,2707],{},"日常寫代碼、運行、調試，一般直接使用 build 目錄裏的程序：",[28,2709,2711],{"className":2710,"code":2557,"language":1197,"meta":33},[1195],[13,2712,2557],{"__ignoreMap":33},[10,2714,2715],{},"只有在驗證安裝佈局、頭文件安裝、動態庫 RPATH 或準備發佈程序時，才需要 install。",[435,2717,2718],{"id":2718},"對應關係總結",[465,2720,2721,2734],{},[468,2722,2723],{},[471,2724,2725,2728,2731],{},[474,2726,2727],{"align":476},"你想做的事",[474,2729,2730],{"align":476},"命令行",[474,2732,2733],{"align":476},"VSCode CMake Tools",[482,2735,2736,2750,2763,2778,2794],{},[471,2737,2738,2741,2745],{},[487,2739,2740],{"align":476},"配置工程",[487,2742,2743],{"align":476},[13,2744,1757],{},[487,2746,2473,2747,2749],{"align":476},[13,2748,910],{}," 後點擊 Configure",[471,2751,2752,2755,2760],{},[487,2753,2754],{"align":476},"編譯工程",[487,2756,2757],{"align":476},[13,2758,2759],{},"cmake --build --preset linux-debug",[487,2761,2762],{"align":476},"點擊 Build",[471,2764,2765,2768,2773],{},[487,2766,2767],{"align":476},"運行 build 產物",[487,2769,2770],{"align":476},[13,2771,2772],{},".\u002Fbuild\u002Flinux-debug\u002Fsrc\u002Fcmake_template",[487,2774,2473,2775,2777],{"align":476},[13,2776,523],{}," target 後點擊運行按鈕",[471,2779,2780,2783,2789],{},[487,2781,2782],{"align":476},"調試 build 產物",[487,2784,2785,2786],{"align":476},"用 GDB 調試 ",[13,2787,2788],{},"build\u002Flinux-debug\u002Fsrc\u002Fcmake_template",[487,2790,2473,2791,2793],{"align":476},[13,2792,523],{}," target 後點擊 Debug 按鈕",[471,2795,2796,2799,2804],{},[487,2797,2798],{"align":476},"安裝工程",[487,2800,2801],{"align":476},[13,2802,2803],{},"cmake --install build\u002Flinux-debug",[487,2805,2806,2807],{"align":476},"命令面板執行 ",[13,2808,2809],{},"CMake: Install",[10,2811,2812,2813,2816],{},"這樣不需要手寫 ",[13,2814,2815],{},".vscode\u002Ftasks.json","，也不需要額外準備 VSCode 調試配置文件。",[431,2818,2819],{"id":2819},"運行與調試注意事項",[10,2821,2822],{},"CMake Tools 可以直接運行或調試當前選擇的可執行 target，所以不需要手寫額外的運行腳本。",[10,2824,2825],{},"如果要調試，建議安裝 Microsoft C\u002FC++ 擴展和 GDB，因為 CMake Tools 負責選擇 target，真正的 C\u002FC++ 調試器仍然需要 GDB\u002FLLDB 支持。",[10,2827,2828,2829,2831],{},"如果你只改了 ",[13,2830,1703],{}," 代碼，一般重新 Build 後再運行或調試即可。",[10,2833,2502,2834,2836],{},[13,2835,656],{},"、新增源文件、改依賴，建議先 Configure，再 Build，然後再運行或調試。",[435,2838,2840,2841],{"id":2839},"為什麼不寫-tasksjson","為什麼不寫 ",[13,2842,2843],{},"tasks.json",[10,2845,2846,2847,2849],{},"舊模板常用 ",[13,2848,2815],{}," 寫一長串命令：",[28,2851,2853],{"className":700,"code":2852,"language":702,"meta":33,"style":33},"cmake ..\nmake install\nsource setup.bash\nrun app\n",[13,2854,2855,2862,2870,2878],{"__ignoreMap":33},[37,2856,2857,2859],{"class":39,"line":40},[37,2858,662],{"class":676},[37,2860,2861],{"class":138}," ..\n",[37,2863,2864,2867],{"class":39,"line":47},[37,2865,2866],{"class":676},"make",[37,2868,2869],{"class":138}," install\n",[37,2871,2872,2875],{"class":39,"line":63},[37,2873,2874],{"class":50},"source",[37,2876,2877],{"class":138}," setup.bash\n",[37,2879,2880,2883],{"class":39,"line":72},[37,2881,2882],{"class":676},"run",[37,2884,2885],{"class":138}," app\n",[10,2887,2888,2889,2891],{},"這個模板不這樣做。原因是構建、運行和調試入口都可以交給 CMake Tools 管理，命令行流程則由 ",[13,2890,15],{}," 固化。",[10,2893,2894],{},"這樣職責更清楚：",[465,2896,2897,2907],{},[468,2898,2899],{},[471,2900,2901,2904],{},[474,2902,2903],{"align":476},"文件",[474,2905,2906],{"align":476},"負責",[482,2908,2909,2918,2925],{},[471,2910,2911,2915],{},[487,2912,2913],{"align":476},[13,2914,15],{},[487,2916,2917],{"align":476},"configure\u002Fbuild 參數",[471,2919,2920,2922],{},[487,2921,2733],{"align":476},[487,2923,2924],{"align":476},"選擇 preset、Configure、Build、運行和調試 target",[471,2926,2927,2931],{},[487,2928,2929],{"align":476},[13,2930,656],{},[487,2932,2933],{"align":476},"target、依賴、安裝規則",[435,2935,2937],{"id":2936},"需要安裝-gdb","需要安裝 gdb",[10,2939,2940],{},"Ubuntu\u002FDebian：",[28,2942,2944],{"className":700,"code":2943,"language":702,"meta":33,"style":33},"sudo apt install gdb\n",[13,2945,2946],{"__ignoreMap":33},[37,2947,2948,2951,2954,2957],{"class":39,"line":40},[37,2949,2950],{"class":676},"sudo",[37,2952,2953],{"class":138}," apt",[37,2955,2956],{"class":138}," install",[37,2958,2959],{"class":138}," gdb\n",[10,2961,2962],{},"Fedora：",[28,2964,2966],{"className":700,"code":2965,"language":702,"meta":33,"style":33},"sudo dnf install gdb\n",[13,2967,2968],{"__ignoreMap":33},[37,2969,2970,2972,2975,2977],{"class":39,"line":40},[37,2971,2950],{"class":676},[37,2973,2974],{"class":138}," dnf",[37,2976,2956],{"class":138},[37,2978,2959],{"class":138},[431,2980,2981],{"id":2981},"常見錯誤",[435,2983,2985],{"id":2984},"忘記安裝-ninja","忘記安裝 Ninja",[10,2987,2988],{},"報錯可能類似：",[28,2990,2993],{"className":2991,"code":2992,"language":1197,"meta":33},[1195],"CMake was unable to find a build program corresponding to \"Ninja\"\n",[13,2994,2992],{"__ignoreMap":33},[10,2996,2997],{},"解決：",[28,2999,3001],{"className":700,"code":3000,"language":702,"meta":33,"style":33},"sudo apt install ninja-build\n",[13,3002,3003],{"__ignoreMap":33},[37,3004,3005,3007,3009,3011],{"class":39,"line":40},[37,3006,2950],{"class":676},[37,3008,2953],{"class":138},[37,3010,2956],{"class":138},[37,3012,3013],{"class":138}," ninja-build\n",[10,3015,3016],{},"或：",[28,3018,3020],{"className":700,"code":3019,"language":702,"meta":33,"style":33},"sudo dnf install ninja-build\n",[13,3021,3022],{"__ignoreMap":33},[37,3023,3024,3026,3028,3030],{"class":39,"line":40},[37,3025,2950],{"class":676},[37,3027,2974],{"class":138},[37,3029,2956],{"class":138},[37,3031,3013],{"class":138},[435,3033,3035],{"id":3034},"preset-名稱寫錯","preset 名稱寫錯",[10,3037,3038],{},"錯誤命令：",[28,3040,3042],{"className":700,"code":3041,"language":702,"meta":33,"style":33},"cmake --preset debug\n",[13,3043,3044],{"__ignoreMap":33},[37,3045,3046,3048,3050],{"class":39,"line":40},[37,3047,662],{"class":676},[37,3049,711],{"class":50},[37,3051,3052],{"class":138}," debug\n",[10,3054,3055,3056,3058],{},"如果文件裏沒有 ",[13,3057,803],{}," 這個 preset，就會失敗。",[10,3060,3061],{},"查看可用 preset：",[28,3063,3065],{"className":700,"code":3064,"language":702,"meta":33,"style":33},"cmake --list-presets\n",[13,3066,3067],{"__ignoreMap":33},[37,3068,3069,3071],{"class":39,"line":40},[37,3070,662],{"class":676},[37,3072,3073],{"class":50}," --list-presets\n",[435,3075,3077],{"id":3076},"build-前沒有-configure","build 前沒有 configure",[10,3079,3080],{},"如果第一次直接運行：",[28,3082,3083],{"className":700,"code":1037,"language":702,"meta":33,"style":33},[13,3084,3085],{"__ignoreMap":33},[37,3086,3087,3089,3091,3093],{"class":39,"line":40},[37,3088,662],{"class":676},[37,3090,1046],{"class":50},[37,3092,711],{"class":50},[37,3094,714],{"class":138},[10,3096,3097],{},"可能會因為構建目錄還沒有生成而失敗。",[10,3099,3100],{},"正確順序：",[28,3102,3103],{"className":700,"code":2070,"language":702,"meta":33,"style":33},[13,3104,3105,3113],{"__ignoreMap":33},[37,3106,3107,3109,3111],{"class":39,"line":40},[37,3108,662],{"class":676},[37,3110,711],{"class":50},[37,3112,714],{"class":138},[37,3114,3115,3117,3119,3121],{"class":39,"line":47},[37,3116,662],{"class":676},[37,3118,1046],{"class":50},[37,3120,711],{"class":50},[37,3122,714],{"class":138},[3124,3125,3126],"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":3128},[3129,3133,3140,3145,3149,3157,3159,3167,3172],{"id":433,"depth":47,"text":433,"children":3130},[3131,3132],{"id":437,"depth":63,"text":437},{"id":536,"depth":63,"text":539},{"id":686,"depth":47,"text":689,"children":3134},[3135,3136,3137,3138,3139],{"id":741,"depth":63,"text":741},{"id":868,"depth":63,"text":871},{"id":948,"depth":63,"text":948},{"id":1056,"depth":63,"text":1059},{"id":1205,"depth":63,"text":1208},{"id":1304,"depth":47,"text":1305,"children":3141},[3142,3143,3144],{"id":1308,"depth":63,"text":1311},{"id":1446,"depth":63,"text":1449},{"id":1852,"depth":63,"text":1855},{"id":1944,"depth":47,"text":842,"children":3146},[3147,3148],{"id":2047,"depth":63,"text":741},{"id":2093,"depth":63,"text":846},{"id":2155,"depth":47,"text":2155,"children":3150},[3151,3152,3153,3154,3155,3156],{"id":2161,"depth":63,"text":2161},{"id":2184,"depth":63,"text":2184},{"id":2207,"depth":63,"text":2207},{"id":2271,"depth":63,"text":2271},{"id":2320,"depth":63,"text":2320},{"id":2349,"depth":63,"text":2349},{"id":2375,"depth":47,"text":3158},"為什麼沒有 installPresets",{"id":2421,"depth":47,"text":2422,"children":3160},[3161,3162,3163,3164,3165,3166],{"id":2433,"depth":63,"text":2434},{"id":2446,"depth":63,"text":2447},{"id":2508,"depth":63,"text":2509},{"id":2568,"depth":63,"text":2569},{"id":2644,"depth":63,"text":2645},{"id":2718,"depth":63,"text":2718},{"id":2819,"depth":47,"text":2819,"children":3168},[3169,3171],{"id":2839,"depth":63,"text":3170},"為什麼不寫 tasks.json",{"id":2936,"depth":63,"text":2937},{"id":2981,"depth":47,"text":2981,"children":3173},[3174,3175,3176],{"id":2984,"depth":63,"text":2985},{"id":3034,"depth":63,"text":3035},{"id":3076,"depth":63,"text":3077},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","2200-0100","2023-10-05","CMakePresets.json 用來保存常用的 CMake 配置。它解決的問題是：不要每次都手寫一長串 cmake -S ... -B ... -G ... -D... 命令。","wiki\u002F2023-10-05-cplusplus-jiao-xue","zh-hk:2023-10-05-cplusplus-jiao-xue","\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装",false,true,null,"zh-HK","zh-hk",{},{"title":5,"description":3180},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","U1X9BqGM4ge1e6z6wNhrbNQMHzqOu2yHjyXsHh2r1Zs",[3198,3204,3209,3214,3219,3224,3229,3234,3239,3244,3249,3254,3259,3264,3269,3274,3279,3284,3289,3294,3299,3304,3309,3314,3319,3324,3329,3334,3339,3344,3349,3354,3359,3364,3369,3374,3379,3384,3389,3394,3399,3404,3409,3414,3419,3424,3429,3434,3439,3444,3449,3454,3459,3464,3469,3474,3479,3484,3489,3494,3499,3504,3509,3514,3519,3524,3529,3534,3539,3544,3549,3554,3559,3564,3569,3574,3575,3580,3585,3590,3595,3600],{"path":3199,"stem":3200,"title":3201,"date":3179,"chapterOrder":3202,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++開發環境搭建與測試","0100",0,{"path":3205,"stem":3206,"title":3207,"date":3179,"chapterOrder":3208,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基礎初識","0200",{"path":3210,"stem":3211,"title":3212,"date":3179,"chapterOrder":3213,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","數據類型與數據存放","0300",{"path":3215,"stem":3216,"title":3217,"date":3179,"chapterOrder":3218,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","輸入輸出","0400",{"path":3220,"stem":3221,"title":3222,"date":3179,"chapterOrder":3223,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","運算符","0500",{"path":3225,"stem":3226,"title":3227,"date":3179,"chapterOrder":3228,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程結構","0600",{"path":3230,"stem":3231,"title":3232,"date":3179,"chapterOrder":3233,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","數組","0700",{"path":3235,"stem":3236,"title":3237,"date":3179,"chapterOrder":3238,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函數與頭文件","0800",{"path":3240,"stem":3241,"title":3242,"date":3179,"chapterOrder":3243,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指針","0900",{"path":3245,"stem":3246,"title":3247,"date":3179,"chapterOrder":3248,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","結構體與共用體","1000",{"path":3250,"stem":3251,"title":3252,"date":3179,"chapterOrder":3253,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","內存分區與生命週期","1100",{"path":3255,"stem":3256,"title":3257,"date":3179,"chapterOrder":3258,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用","1200",{"path":3260,"stem":3261,"title":3262,"date":3179,"chapterOrder":3263,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","函數提高與命名空間","1300",{"path":3265,"stem":3266,"title":3267,"date":3179,"chapterOrder":3268,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封裝","1400-0100",{"path":3270,"stem":3271,"title":3272,"date":3179,"chapterOrder":3273,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","對象初始化和清理","1400-0200",{"path":3275,"stem":3276,"title":3277,"date":3179,"chapterOrder":3278,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","對象模型與this指針","1400-0300",{"path":3280,"stem":3281,"title":3282,"date":3179,"chapterOrder":3283,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元與運算符重載","1400-0400",{"path":3285,"stem":3286,"title":3287,"date":3179,"chapterOrder":3288,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","繼承","1400-0500",{"path":3290,"stem":3291,"title":3292,"date":3179,"chapterOrder":3293,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多態","1400-0600",{"path":3295,"stem":3296,"title":3297,"date":3179,"chapterOrder":3298,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","類和對象","1400",{"path":3300,"stem":3301,"title":3302,"date":3179,"chapterOrder":3303,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作","1500",{"path":3305,"stem":3306,"title":3307,"date":3179,"chapterOrder":3308,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","異常處理","1600",{"path":3310,"stem":3311,"title":3312,"date":3179,"chapterOrder":3313,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板","1700",{"path":3315,"stem":3316,"title":3317,"date":3179,"chapterOrder":3318,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初識","1800-0100",{"path":3320,"stem":3321,"title":3322,"date":3179,"chapterOrder":3323,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":3325,"stem":3326,"title":3327,"date":3179,"chapterOrder":3328,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器","1800-0300",{"path":3330,"stem":3331,"title":3332,"date":3179,"chapterOrder":3333,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":3335,"stem":3336,"title":3337,"date":3179,"chapterOrder":3338,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":3340,"stem":3341,"title":3342,"date":3179,"chapterOrder":3343,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":3345,"stem":3346,"title":3347,"date":3179,"chapterOrder":3348,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue 容器","1800-0700",{"path":3350,"stem":3351,"title":3352,"date":3179,"chapterOrder":3353,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":3355,"stem":3356,"title":3357,"date":3179,"chapterOrder":3358,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":3360,"stem":3361,"title":3362,"date":3179,"chapterOrder":3363,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":3365,"stem":3366,"title":3367,"date":3179,"chapterOrder":3368,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","函數對象與謂詞","1800-1100",{"path":3370,"stem":3371,"title":3372,"date":3179,"chapterOrder":3373,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","常用算法","1800-1200",{"path":3375,"stem":3376,"title":3377,"date":3179,"chapterOrder":3378,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高編程","1800",{"path":3380,"stem":3381,"title":3382,"date":3179,"chapterOrder":3383,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++類型轉換","1900",{"path":3385,"stem":3386,"title":3387,"date":3179,"chapterOrder":3388,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":3390,"stem":3391,"title":3392,"date":3179,"chapterOrder":3393,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":3395,"stem":3396,"title":3397,"date":3179,"chapterOrder":3398,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":3400,"stem":3401,"title":3402,"date":3179,"chapterOrder":3403,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":3405,"stem":3406,"title":3407,"date":3179,"chapterOrder":3408,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","範圍 for 循環","2000-0500",{"path":3410,"stem":3411,"title":3412,"date":3179,"chapterOrder":3413,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","結構化綁定","2000-0600",{"path":3415,"stem":3416,"title":3417,"date":3179,"chapterOrder":3418,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":3420,"stem":3421,"title":3422,"date":3179,"chapterOrder":3423,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":3425,"stem":3426,"title":3427,"date":3179,"chapterOrder":3428,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指針","2000-0900",{"path":3430,"stem":3431,"title":3432,"date":3179,"chapterOrder":3433,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移動語義","2000-1000",{"path":3435,"stem":3436,"title":3437,"date":3179,"chapterOrder":3438,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表達式","2000-1100",{"path":3440,"stem":3441,"title":3442,"date":3179,"chapterOrder":3443,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":3445,"stem":3446,"title":3447,"date":3179,"chapterOrder":3448,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":3450,"stem":3451,"title":3452,"date":3179,"chapterOrder":3453,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":3455,"stem":3456,"title":3457,"date":3179,"chapterOrder":3458,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":3460,"stem":3461,"title":3462,"date":3179,"chapterOrder":3463,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":3465,"stem":3466,"title":3467,"date":3179,"chapterOrder":3468,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":3470,"stem":3471,"title":3472,"date":3179,"chapterOrder":3473,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":3475,"stem":3476,"title":3477,"date":3179,"chapterOrder":3478,"chapterDepth":47,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread 與 join","2000-1900-0100",{"path":3480,"stem":3481,"title":3482,"date":3179,"chapterOrder":3483,"chapterDepth":47,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 與 lock_guard","2000-1900-0200",{"path":3485,"stem":3486,"title":3487,"date":3179,"chapterOrder":3488,"chapterDepth":47,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":3490,"stem":3491,"title":3492,"date":3179,"chapterOrder":3493,"chapterDepth":47,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":3495,"stem":3496,"title":3497,"date":3179,"chapterOrder":3498,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","併發編程","2000-1900",{"path":3500,"stem":3501,"title":3502,"date":3179,"chapterOrder":3503,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":3505,"stem":3506,"title":3507,"date":3179,"chapterOrder":3508,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 簡介","2000-2100",{"path":3510,"stem":3511,"title":3512,"date":3179,"chapterOrder":3513,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","現代C++","2000",{"path":3515,"stem":3516,"title":3517,"date":3179,"chapterOrder":3518,"chapterDepth":47,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定時器與異步 IO","2100-0100-0100",{"path":3520,"stem":3521,"title":3522,"date":3179,"chapterOrder":3523,"chapterDepth":47,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基礎","2100-0100-0200",{"path":3525,"stem":3526,"title":3527,"date":3179,"chapterOrder":3528,"chapterDepth":47,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信","2100-0100-0300",{"path":3530,"stem":3531,"title":3532,"date":3179,"chapterOrder":3533,"chapterDepth":47,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信","2100-0100-0400",{"path":3535,"stem":3536,"title":3537,"date":3179,"chapterOrder":3538,"chapterDepth":47,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信","2100-0100-0500",{"path":3540,"stem":3541,"title":3542,"date":3179,"chapterOrder":3543,"chapterDepth":47,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","機器人工程寫法與 ROS2 集成","2100-0100-0600",{"path":3545,"stem":3546,"title":3547,"date":3179,"chapterOrder":3548,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio異步IO庫","2100-0100",{"path":3550,"stem":3551,"title":3552,"date":3179,"chapterOrder":3553,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen線性代數庫","2100-0200",{"path":3555,"stem":3556,"title":3557,"date":3179,"chapterOrder":3558,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV計算機視覺庫","2100-0300",{"path":3560,"stem":3561,"title":3562,"date":3179,"chapterOrder":3563,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL點雲庫","2100-0400",{"path":3565,"stem":3566,"title":3567,"date":3179,"chapterOrder":3568,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李羣李代數庫","2100-0500",{"path":3570,"stem":3571,"title":3572,"date":3179,"chapterOrder":3573,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用庫學習","2100",{"path":3177,"stem":3195,"title":5,"date":3179,"chapterOrder":3178,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},{"path":3576,"stem":3577,"title":3578,"date":3179,"chapterOrder":3579,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","頂層CMake與公共編譯選項","2200-0200",{"path":3581,"stem":3582,"title":3583,"date":3179,"chapterOrder":3584,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src與lib模塊CMake詳解","2200-0300",{"path":3586,"stem":3587,"title":3588,"date":3179,"chapterOrder":3589,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方庫依賴寫法","2200-0400",{"path":3591,"stem":3592,"title":3593,"date":3179,"chapterOrder":3594,"chapterDepth":40,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板擴展與常見問題","2200-0500",{"path":3596,"stem":3597,"title":3598,"date":3179,"chapterOrder":3599,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3187},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板","2200",{"path":3183,"stem":3601,"title":3602,"date":3179,"chapterOrder":3189,"chapterDepth":3203,"docKey":3182,"docRoot":3183,"docTitle":3184,"isWikiDoc":3188,"isWikiIndex":3188},"_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",{"variants":3604},[3605,3608,3611,3612,3615],{"path":3606,"localeSlug":3607,"i18nKey":3186},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","en-us",{"path":3609,"localeSlug":3610,"i18nKey":3186},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","zh-hant",{"path":3177,"localeSlug":3191,"i18nKey":3186},{"path":3613,"localeSlug":3614,"i18nKey":3186},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","zh-tw",{"path":3616,"localeSlug":3617,"i18nKey":3186},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","zh-cn",[3606,3194,3609,3194,3177,3194,3613,3194,3616,3194],1784646844804]