[{"data":1,"prerenderedAt":3201},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti":2779,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti":3185,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti":3200},{"id":4,"title":5,"body":6,"canonicalPath":2761,"chapterDepth":35,"chapterOrder":2762,"date":2763,"description":12,"docI18nKey":2764,"docKey":2765,"docRoot":2766,"docTitle":2767,"extension":2768,"i18nKey":2769,"isBlogPost":2770,"isWikiDoc":240,"isWikiIndex":2770,"layout":2771,"legacyPath":2771,"locale":2772,"localeSlug":2773,"meta":2774,"navigation":240,"path":2761,"seo":2775,"sourcePath":2776,"sourceStem":2769,"stem":2777,"wikiDepth":35,"__hash__":2778},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题.md","Template Extensions and FAQ",{"type":7,"value":8,"toc":2719},"minimark",[9,13,18,21,69,80,83,91,94,116,119,142,146,149,155,158,173,176,182,189,193,200,203,209,215,517,524,537,540,577,581,584,590,595,700,703,709,713,716,735,738,754,757,781,784,790,793,799,802,811,815,818,844,847,870,873,896,899,903,905,932,935,963,966,1019,1025,1033,1038,1065,1068,1086,1089,1103,1106,1110,1113,1142,1145,1168,1171,1202,1205,1248,1252,1255,1284,1287,1300,1303,1307,1310,1341,1344,1357,1360,1372,1376,1379,1385,1388,1433,1436,1450,1453,1457,1464,1486,1489,1492,1511,1514,1531,1534,1567,1575,1578,1590,1593,1605,1608,1614,1617,1623,1626,1629,1638,1641,1647,1650,1656,1659,1686,1689,1716,1719,1725,1729,1732,1735,1766,1769,1796,1799,1812,1815,1832,1835,1850,1854,1864,1867,1901,1904,1907,1948,1951,1955,1962,1965,1973,1976,2055,2063,2069,2107,2113,2123,2127,2130,2133,2139,2159,2177,2189,2203,2209,2217,2223,2226,2258,2264,2285,2288,2294,2301,2307,2310,2316,2319,2332,2336,2339,2357,2360,2372,2375,2381,2384,2388,2391,2405,2409,2414,2417,2427,2430,2435,2437,2440,2446,2449,2453,2456,2459,2464,2470,2474,2477,2483,2486,2489,2511,2514,2518,2521,2523,2536,2539,2555,2557,2572,2576,2579,2588,2591,2600,2605,2611,2614,2620,2629,2632,2647,2650,2654,2657,2715],[10,11,12],"p",{},"This section outlines the most common extensions and troubleshooting when using this CMake template.",[14,15,17],"h2",{"id":16},"add-new-source-files","Add new source files",[10,19,20],{},"Current repository directory use:",[22,23,28],"pre",{"className":24,"code":25,"language":26,"meta":27,"style":27},"language-cmake shiki shiki-themes github-light github-dark","file(GLOB_RECURSE ${PREFIX}_SRC_LIST CONFIGURE_DEPENDS\n  \"${CMAKE_CURRENT_LIST_DIR}\u002Fsrc\u002F*.c\"\n  \"${CMAKE_CURRENT_LIST_DIR}\u002Fsrc\u002F*.cpp\"\n)\n","cmake","",[29,30,31,50,57,63],"code",{"__ignoreMap":27},[32,33,36,40,44,47],"span",{"class":34,"line":35},"line",1,[32,37,39],{"class":38},"szBVR","file",[32,41,43],{"class":42},"sVt8B","(GLOB_RECURSE ",[32,45,46],{"class":38},"${PREFIX}",[32,48,49],{"class":42},"_SRC_LIST CONFIGURE_DEPENDS\n",[32,51,53],{"class":34,"line":52},2,[32,54,56],{"class":55},"sZZnC","  \"${CMAKE_CURRENT_LIST_DIR}\u002Fsrc\u002F*.c\"\n",[32,58,60],{"class":34,"line":59},3,[32,61,62],{"class":55},"  \"${CMAKE_CURRENT_LIST_DIR}\u002Fsrc\u002F*.cpp\"\n",[32,64,66],{"class":34,"line":65},4,[32,67,68],{"class":42},")\n",[10,70,71,72,75,76,79],{},"So as long as you place the new ",[29,73,74],{},".cpp"," into the corresponding module's ",[29,77,78],{},"src\u002F"," directory, CMake will automatically collect it.",[10,81,82],{},"For example:",[22,84,89],{"className":85,"code":87,"language":88,"meta":27},[86],"language-text","src\u002Flib1\u002Fsrc\u002Fmath_utils.cpp\n","text",[29,90,87],{"__ignoreMap":27},[10,92,93],{},"Then rebuild:",[22,95,99],{"className":96,"code":97,"language":98,"meta":27,"style":27},"language-bash shiki shiki-themes github-light github-dark","cmake --build --preset linux-debug\n","bash",[29,100,101],{"__ignoreMap":27},[32,102,103,106,110,113],{"class":34,"line":35},[32,104,26],{"class":105},"sScJk",[32,107,109],{"class":108},"sj4cs"," --build",[32,111,112],{"class":108}," --preset",[32,114,115],{"class":55}," linux-debug\n",[10,117,118],{},"If you find that new files aren't being compiled, you can manually reconfigure:",[22,120,122],{"className":96,"code":121,"language":98,"meta":27,"style":27},"cmake --preset linux-debug\ncmake --build --preset linux-debug\n",[29,123,124,132],{"__ignoreMap":27},[32,125,126,128,130],{"class":34,"line":35},[32,127,26],{"class":105},[32,129,112],{"class":108},[32,131,115],{"class":55},[32,133,134,136,138,140],{"class":34,"line":52},[32,135,26],{"class":105},[32,137,109],{"class":108},[32,139,112],{"class":108},[32,141,115],{"class":55},[14,143,145],{"id":144},"add-a-new-header-file","Add a new header file",[10,147,148],{},"Recommended path:",[22,150,153],{"className":151,"code":152,"language":88,"meta":27},[86],"src\u002Flib1\u002Finc\u002Flib1\u002Fmath_utils.hpp\n",[29,154,152],{"__ignoreMap":27},[10,156,157],{},"Code contains:",[22,159,163],{"className":160,"code":161,"language":162,"meta":27,"style":27},"language-cpp shiki shiki-themes github-light github-dark","#include \"lib1\u002Fmath_utils.hpp\"\n","cpp",[29,164,165],{"__ignoreMap":27},[32,166,167,170],{"class":34,"line":35},[32,168,169],{"class":38},"#include",[32,171,172],{"class":55}," \"lib1\u002Fmath_utils.hpp\"\n",[10,174,175],{},"Don't just put it as:",[22,177,180],{"className":178,"code":179,"language":88,"meta":27},[86],"src\u002Flib1\u002Finc\u002Fmath_utils.hpp\n",[29,181,179],{"__ignoreMap":27},[10,183,184,185,188],{},"Because multiple libraries might have identically named header files. Using a structure like ",[29,186,187],{},"inc\u002Flib1\u002F"," avoids such naming conflicts.",[14,190,192],{"id":191},"add-a-new-library-module","Add a new library module",[10,194,195,196,199],{},"Suppose you want to add ",[29,197,198],{},"lib3",".",[10,201,202],{},"Directory structure:",[22,204,207],{"className":205,"code":206,"language":88,"meta":27},[86],"src\u002Flib3\u002F\n├── CMakeLists.txt\n├── inc\u002F\n│   └── lib3\u002F\n│       └── example.hpp\n└── src\u002F\n    └── example.cpp\n",[29,208,206],{"__ignoreMap":27},[10,210,211,214],{},[29,212,213],{},"src\u002Flib3\u002FCMakeLists.txt","：",[22,216,218],{"className":24,"code":217,"language":26,"meta":27,"style":27},"set(PREFIX \"lib3\")\n\nfile(GLOB_RECURSE ${PREFIX}_SRC_LIST CONFIGURE_DEPENDS\n  \"${CMAKE_CURRENT_LIST_DIR}\u002Fsrc\u002F*.c\"\n  \"${CMAKE_CURRENT_LIST_DIR}\u002Fsrc\u002F*.cpp\"\n)\n\nadd_library(${PREFIX}_src_lib SHARED\n  ${${PREFIX}_SRC_LIST}\n)\n\ntarget_include_directories(${PREFIX}_src_lib\n  PUBLIC\n    $\u003CBUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}\u002Finc>\n    $\u003CINSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>\n)\n\ntarget_link_libraries(${PREFIX}_src_lib\n  PUBLIC\n    project_options\n  PRIVATE\n    project_warnings\n)\n\n# ========================\n# Third-party dependencies\n# ========================\n\n# =======\n# Install\n# =======\ninstall(TARGETS ${PREFIX}_src_lib\n  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}\n  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}\n  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}\n)\n\ninstall(DIRECTORY \"${CMAKE_CURRENT_LIST_DIR}\u002Finc\u002F\"\n  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}\n)\n",[29,219,220,236,242,252,256,261,266,271,284,295,300,305,318,324,336,348,353,358,370,375,381,387,393,398,403,410,416,421,426,432,438,443,456,465,473,482,487,492,503,512],{"__ignoreMap":27},[32,221,222,225,228,231,234],{"class":34,"line":35},[32,223,224],{"class":38},"set",[32,226,227],{"class":42},"(",[32,229,230],{"class":105},"PREFIX",[32,232,233],{"class":55}," \"lib3\"",[32,235,68],{"class":42},[32,237,238],{"class":34,"line":52},[32,239,241],{"emptyLinePlaceholder":240},true,"\n",[32,243,244,246,248,250],{"class":34,"line":59},[32,245,39],{"class":38},[32,247,43],{"class":42},[32,249,46],{"class":38},[32,251,49],{"class":42},[32,253,254],{"class":34,"line":65},[32,255,56],{"class":55},[32,257,259],{"class":34,"line":258},5,[32,260,62],{"class":55},[32,262,264],{"class":34,"line":263},6,[32,265,68],{"class":42},[32,267,269],{"class":34,"line":268},7,[32,270,241],{"emptyLinePlaceholder":240},[32,272,274,277,279,281],{"class":34,"line":273},8,[32,275,276],{"class":38},"add_library",[32,278,227],{"class":42},[32,280,46],{"class":38},[32,282,283],{"class":42},"_src_lib SHARED\n",[32,285,287,290,292],{"class":34,"line":286},9,[32,288,289],{"class":42},"  ${",[32,291,46],{"class":38},[32,293,294],{"class":42},"_SRC_LIST}\n",[32,296,298],{"class":34,"line":297},10,[32,299,68],{"class":42},[32,301,303],{"class":34,"line":302},11,[32,304,241],{"emptyLinePlaceholder":240},[32,306,308,311,313,315],{"class":34,"line":307},12,[32,309,310],{"class":38},"target_include_directories",[32,312,227],{"class":42},[32,314,46],{"class":38},[32,316,317],{"class":42},"_src_lib\n",[32,319,321],{"class":34,"line":320},13,[32,322,323],{"class":105},"  PUBLIC\n",[32,325,327,330,333],{"class":34,"line":326},14,[32,328,329],{"class":42},"    $\u003CBUILD_INTERFACE:",[32,331,332],{"class":38},"${CMAKE_CURRENT_LIST_DIR}",[32,334,335],{"class":42},"\u002Finc>\n",[32,337,339,342,345],{"class":34,"line":338},15,[32,340,341],{"class":42},"    $\u003CINSTALL_INTERFACE:",[32,343,344],{"class":38},"${CMAKE_INSTALL_INCLUDEDIR}",[32,346,347],{"class":42},">\n",[32,349,351],{"class":34,"line":350},16,[32,352,68],{"class":42},[32,354,356],{"class":34,"line":355},17,[32,357,241],{"emptyLinePlaceholder":240},[32,359,361,364,366,368],{"class":34,"line":360},18,[32,362,363],{"class":38},"target_link_libraries",[32,365,227],{"class":42},[32,367,46],{"class":38},[32,369,317],{"class":42},[32,371,373],{"class":34,"line":372},19,[32,374,323],{"class":105},[32,376,378],{"class":34,"line":377},20,[32,379,380],{"class":42},"    project_options\n",[32,382,384],{"class":34,"line":383},21,[32,385,386],{"class":105},"  PRIVATE\n",[32,388,390],{"class":34,"line":389},22,[32,391,392],{"class":42},"    project_warnings\n",[32,394,396],{"class":34,"line":395},23,[32,397,68],{"class":42},[32,399,401],{"class":34,"line":400},24,[32,402,241],{"emptyLinePlaceholder":240},[32,404,406],{"class":34,"line":405},25,[32,407,409],{"class":408},"sJ8bj","# ========================\n",[32,411,413],{"class":34,"line":412},26,[32,414,415],{"class":408},"# Third-party dependencies\n",[32,417,419],{"class":34,"line":418},27,[32,420,409],{"class":408},[32,422,424],{"class":34,"line":423},28,[32,425,241],{"emptyLinePlaceholder":240},[32,427,429],{"class":34,"line":428},29,[32,430,431],{"class":408},"# =======\n",[32,433,435],{"class":34,"line":434},30,[32,436,437],{"class":408},"# Install\n",[32,439,441],{"class":34,"line":440},31,[32,442,431],{"class":408},[32,444,446,449,452,454],{"class":34,"line":445},32,[32,447,448],{"class":38},"install",[32,450,451],{"class":42},"(TARGETS ",[32,453,46],{"class":38},[32,455,317],{"class":42},[32,457,459,462],{"class":34,"line":458},33,[32,460,461],{"class":42},"  LIBRARY DESTINATION ",[32,463,464],{"class":38},"${CMAKE_INSTALL_LIBDIR}\n",[32,466,468,471],{"class":34,"line":467},34,[32,469,470],{"class":42},"  ARCHIVE DESTINATION ",[32,472,464],{"class":38},[32,474,476,479],{"class":34,"line":475},35,[32,477,478],{"class":42},"  RUNTIME DESTINATION ",[32,480,481],{"class":38},"${CMAKE_INSTALL_BINDIR}\n",[32,483,485],{"class":34,"line":484},36,[32,486,68],{"class":42},[32,488,490],{"class":34,"line":489},37,[32,491,241],{"emptyLinePlaceholder":240},[32,493,495,497,500],{"class":34,"line":494},38,[32,496,448],{"class":38},[32,498,499],{"class":42},"(DIRECTORY ",[32,501,502],{"class":55},"\"${CMAKE_CURRENT_LIST_DIR}\u002Finc\u002F\"\n",[32,504,506,509],{"class":34,"line":505},39,[32,507,508],{"class":42},"  DESTINATION ",[32,510,511],{"class":38},"${CMAKE_INSTALL_INCLUDEDIR}\n",[32,513,515],{"class":34,"line":514},40,[32,516,68],{"class":42},[10,518,519,520,523],{},"Then add to ",[29,521,522],{},"src\u002FCMakeLists.txt",":",[22,525,527],{"className":24,"code":526,"language":26,"meta":27,"style":27},"add_subdirectory(lib3)\n",[29,528,529],{"__ignoreMap":27},[32,530,531,534],{"class":34,"line":35},[32,532,533],{"class":38},"add_subdirectory",[32,535,536],{"class":42},"(lib3)\n",[10,538,539],{},"and link to the main program:",[22,541,543],{"className":24,"code":542,"language":26,"meta":27,"style":27},"target_link_libraries(${PROJECT_NAME}\n  PRIVATE\n    lib1_src_lib\n    lib2_src_lib\n    lib3_src_lib\n)\n",[29,544,545,554,558,563,568,573],{"__ignoreMap":27},[32,546,547,549,551],{"class":34,"line":35},[32,548,363],{"class":38},[32,550,227],{"class":42},[32,552,553],{"class":38},"${PROJECT_NAME}\n",[32,555,556],{"class":34,"line":52},[32,557,386],{"class":105},[32,559,560],{"class":34,"line":59},[32,561,562],{"class":42},"    lib1_src_lib\n",[32,564,565],{"class":34,"line":65},[32,566,567],{"class":42},"    lib2_src_lib\n",[32,569,570],{"class":34,"line":258},[32,571,572],{"class":42},"    lib3_src_lib\n",[32,574,575],{"class":34,"line":263},[32,576,68],{"class":42},[14,578,580],{"id":579},"add-a-new-executable-file","Add a new executable file",[10,582,583],{},"If a project has multiple programs, for example:",[22,585,588],{"className":586,"code":587,"language":88,"meta":27},[86],"src\u002Fmain.cpp\nsrc\u002Ftools\u002Fcalibrate_camera.cpp\n",[29,589,587],{"__ignoreMap":27},[10,591,592,593,523],{},"You can add in ",[29,594,522],{},[22,596,598],{"className":24,"code":597,"language":26,"meta":27,"style":27},"add_executable(calibrate_camera\n  ${CMAKE_CURRENT_SOURCE_DIR}\u002Ftools\u002Fcalibrate_camera.cpp\n)\n\ntarget_link_libraries(calibrate_camera\n  PRIVATE\n    project_options\n    project_warnings\n    lib1_src_lib\n    lib2_src_lib\n)\n\nset_target_properties(calibrate_camera PROPERTIES\n  INSTALL_RPATH \"$ORIGIN\u002F..\u002F${CMAKE_INSTALL_LIBDIR}\"\n)\n\ninstall(TARGETS calibrate_camera\n  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}\n)\n",[29,599,600,608,616,620,624,630,634,638,642,646,650,654,658,666,675,679,683,690,696],{"__ignoreMap":27},[32,601,602,605],{"class":34,"line":35},[32,603,604],{"class":38},"add_executable",[32,606,607],{"class":42},"(calibrate_camera\n",[32,609,610,613],{"class":34,"line":52},[32,611,612],{"class":38},"  ${CMAKE_CURRENT_SOURCE_DIR}",[32,614,615],{"class":42},"\u002Ftools\u002Fcalibrate_camera.cpp\n",[32,617,618],{"class":34,"line":59},[32,619,68],{"class":42},[32,621,622],{"class":34,"line":65},[32,623,241],{"emptyLinePlaceholder":240},[32,625,626,628],{"class":34,"line":258},[32,627,363],{"class":38},[32,629,607],{"class":42},[32,631,632],{"class":34,"line":263},[32,633,386],{"class":105},[32,635,636],{"class":34,"line":268},[32,637,380],{"class":42},[32,639,640],{"class":34,"line":273},[32,641,392],{"class":42},[32,643,644],{"class":34,"line":286},[32,645,562],{"class":42},[32,647,648],{"class":34,"line":297},[32,649,567],{"class":42},[32,651,652],{"class":34,"line":302},[32,653,68],{"class":42},[32,655,656],{"class":34,"line":307},[32,657,241],{"emptyLinePlaceholder":240},[32,659,660,663],{"class":34,"line":320},[32,661,662],{"class":38},"set_target_properties",[32,664,665],{"class":42},"(calibrate_camera PROPERTIES\n",[32,667,668,672],{"class":34,"line":326},[32,669,671],{"class":670},"s4XuR","  INSTALL_RPATH",[32,673,674],{"class":55}," \"$ORIGIN\u002F..\u002F${CMAKE_INSTALL_LIBDIR}\"\n",[32,676,677],{"class":34,"line":338},[32,678,68],{"class":42},[32,680,681],{"class":34,"line":350},[32,682,241],{"emptyLinePlaceholder":240},[32,684,685,687],{"class":34,"line":355},[32,686,448],{"class":38},[32,688,689],{"class":42},"(TARGETS calibrate_camera\n",[32,691,692,694],{"class":34,"line":360},[32,693,478],{"class":42},[32,695,481],{"class":38},[32,697,698],{"class":34,"line":372},[32,699,68],{"class":42},[10,701,702],{},"After installation:",[22,704,707],{"className":705,"code":706,"language":88,"meta":27},[86],"install\u002Flinux-debug\u002Fbin\u002Fcalibrate_camera\n",[29,708,706],{"__ignoreMap":27},[14,710,712],{"id":711},"change-project-name","Change project name",[10,714,715],{},"Top-level:",[22,717,719],{"className":24,"code":718,"language":26,"meta":27,"style":27},"project(cmake_template VERSION 1.0.0 LANGUAGES C CXX)\n",[29,720,721],{"__ignoreMap":27},[32,722,723,726,729,732],{"class":34,"line":35},[32,724,725],{"class":38},"project",[32,727,728],{"class":42},"(cmake_template ",[32,730,731],{"class":105},"VERSION",[32,733,734],{"class":42}," 1.0.0 LANGUAGES C CXX)\n",[10,736,737],{},"Please provide the Simplified Chinese Markdown fragment you'd like me to translate.",[22,739,741],{"className":24,"code":740,"language":26,"meta":27,"style":27},"project(robot_app VERSION 1.0.0 LANGUAGES C CXX)\n",[29,742,743],{"__ignoreMap":27},[32,744,745,747,750,752],{"class":34,"line":35},[32,746,725],{"class":38},[32,748,749],{"class":42},"(robot_app ",[32,751,731],{"class":105},[32,753,734],{"class":42},[10,755,756],{},"Because the main program uses:",[22,758,760],{"className":24,"code":759,"language":26,"meta":27,"style":27},"add_executable(${PROJECT_NAME}\n  ${CMAKE_CURRENT_SOURCE_DIR}\u002Fmain.cpp\n)\n",[29,761,762,770,777],{"__ignoreMap":27},[32,763,764,766,768],{"class":34,"line":35},[32,765,604],{"class":38},[32,767,227],{"class":42},[32,769,553],{"class":38},[32,771,772,774],{"class":34,"line":52},[32,773,612],{"class":38},[32,775,776],{"class":42},"\u002Fmain.cpp\n",[32,778,779],{"class":34,"line":59},[32,780,68],{"class":42},[10,782,783],{},"So the executable file will come from:",[22,785,788],{"className":786,"code":787,"language":88,"meta":27},[86],"cmake_template\n",[29,789,787],{"__ignoreMap":27},[10,791,792],{},"Change to:",[22,794,797],{"className":795,"code":796,"language":88,"meta":27},[86],"robot_app\n",[29,798,796],{"__ignoreMap":27},[10,800,801],{},"Update the run commands in the README as well:",[22,803,805],{"className":96,"code":804,"language":98,"meta":27,"style":27},".\u002Finstall\u002Flinux-debug\u002Fbin\u002Frobot_app\n",[29,806,807],{"__ignoreMap":27},[32,808,809],{"class":34,"line":35},[32,810,804],{"class":105},[14,812,814],{"id":813},"modify-the-c-standard","Modify the C++ standard.",[10,816,817],{},"Current:",[22,819,821],{"className":24,"code":820,"language":26,"meta":27,"style":27},"set(CMAKE_CXX_STANDARD 17)\ntarget_compile_features(project_options INTERFACE cxx_std_17)\n",[29,822,823,830],{"__ignoreMap":27},[32,824,825,827],{"class":34,"line":35},[32,826,224],{"class":38},[32,828,829],{"class":42},"(CMAKE_CXX_STANDARD 17)\n",[32,831,832,835,838,841],{"class":34,"line":52},[32,833,834],{"class":38},"target_compile_features",[32,836,837],{"class":42},"(project_options ",[32,839,840],{"class":105},"INTERFACE",[32,842,843],{"class":42}," cxx_std_17)\n",[10,845,846],{},"If you want to change C++20:",[22,848,850],{"className":24,"code":849,"language":26,"meta":27,"style":27},"set(CMAKE_CXX_STANDARD 20)\ntarget_compile_features(project_options INTERFACE cxx_std_20)\n",[29,851,852,859],{"__ignoreMap":27},[32,853,854,856],{"class":34,"line":35},[32,855,224],{"class":38},[32,857,858],{"class":42},"(CMAKE_CXX_STANDARD 20)\n",[32,860,861,863,865,867],{"class":34,"line":52},[32,862,834],{"class":38},[32,864,837],{"class":42},[32,866,840],{"class":105},[32,868,869],{"class":42}," cxx_std_20)\n",[10,871,872],{},"If one were to modify C++23:",[22,874,876],{"className":24,"code":875,"language":26,"meta":27,"style":27},"set(CMAKE_CXX_STANDARD 23)\ntarget_compile_features(project_options INTERFACE cxx_std_23)\n",[29,877,878,885],{"__ignoreMap":27},[32,879,880,882],{"class":34,"line":35},[32,881,224],{"class":38},[32,883,884],{"class":42},"(CMAKE_CXX_STANDARD 23)\n",[32,886,887,889,891,893],{"class":34,"line":52},[32,888,834],{"class":38},[32,890,837],{"class":42},[32,892,840],{"class":105},[32,894,895],{"class":42}," cxx_std_23)\n",[10,897,898],{},"Also confirm that the compiler supports the corresponding standard.",[14,900,902],{"id":901},"change-dynamic-library-to-static-library","Change dynamic library to static library",[10,904,817],{},[22,906,908],{"className":24,"code":907,"language":26,"meta":27,"style":27},"add_library(${PREFIX}_src_lib SHARED\n  ${${PREFIX}_SRC_LIST}\n)\n",[29,909,910,920,928],{"__ignoreMap":27},[32,911,912,914,916,918],{"class":34,"line":35},[32,913,276],{"class":38},[32,915,227],{"class":42},[32,917,46],{"class":38},[32,919,283],{"class":42},[32,921,922,924,926],{"class":34,"line":52},[32,923,289],{"class":42},[32,925,46],{"class":38},[32,927,294],{"class":42},[32,929,930],{"class":34,"line":59},[32,931,68],{"class":42},[10,933,934],{},"Change to static library:",[22,936,938],{"className":24,"code":937,"language":26,"meta":27,"style":27},"add_library(${PREFIX}_src_lib STATIC\n  ${${PREFIX}_SRC_LIST}\n)\n",[29,939,940,951,959],{"__ignoreMap":27},[32,941,942,944,946,948],{"class":34,"line":35},[32,943,276],{"class":38},[32,945,227],{"class":42},[32,947,46],{"class":38},[32,949,950],{"class":42},"_src_lib STATIC\n",[32,952,953,955,957],{"class":34,"line":52},[32,954,289],{"class":42},[32,956,46],{"class":38},[32,958,294],{"class":42},[32,960,961],{"class":34,"line":59},[32,962,68],{"class":42},[10,964,965],{},"Comparison between dynamic libraries and static libraries:",[967,968,969,986],"table",{},[970,971,972],"thead",{},[973,974,975,980,983],"tr",{},[976,977,979],"th",{"align":978},"left","type",[976,981,982],{"align":978},"Advantages",[976,984,985],{"align":978},"Disadvantages",[987,988,989,1006],"tbody",{},[973,990,991,997,1000],{},[992,993,994],"td",{"align":978},[29,995,996],{},"SHARED",[992,998,999],{"align":978},"Executable files are smaller, and libraries can be updated independently.",[992,1001,1002,1003],{"align":978},"Runtime should be able to find ",[29,1004,1005],{},".so",[973,1007,1008,1013,1016],{},[992,1009,1010],{"align":978},[29,1011,1012],{},"STATIC",[992,1014,1015],{"align":978},"Easy deployment, with much code compiled into executable files.",[992,1017,1018],{"align":978},"Executable files are larger, and updating libraries requires relinking.",[10,1020,1021,1022,1024],{},"The default template ",[29,1023,996],{}," is for demonstrating dynamic library installation and RPATH setup.",[14,1026,1028,1029,1032],{"id":1027},"use-build_shared_libs-to-control-library-types","Use ",[29,1030,1031],{},"BUILD_SHARED_LIBS"," to control library types",[10,1034,1035,1036,523],{},"You can also skip ",[29,1037,996],{},[22,1039,1041],{"className":24,"code":1040,"language":26,"meta":27,"style":27},"add_library(${PREFIX}_src_lib\n  ${${PREFIX}_SRC_LIST}\n)\n",[29,1042,1043,1053,1061],{"__ignoreMap":27},[32,1044,1045,1047,1049,1051],{"class":34,"line":35},[32,1046,276],{"class":38},[32,1048,227],{"class":42},[32,1050,46],{"class":38},[32,1052,317],{"class":42},[32,1054,1055,1057,1059],{"class":34,"line":52},[32,1056,289],{"class":42},[32,1058,46],{"class":38},[32,1060,294],{"class":42},[32,1062,1063],{"class":34,"line":59},[32,1064,68],{"class":42},[10,1066,1067],{},"Then control it in the preset.",[22,1069,1073],{"className":1070,"code":1071,"language":1072,"meta":27,"style":27},"language-json shiki shiki-themes github-light github-dark","\"BUILD_SHARED_LIBS\": \"ON\"\n","json",[29,1074,1075],{"__ignoreMap":27},[32,1076,1077,1080,1083],{"class":34,"line":35},[32,1078,1079],{"class":55},"\"BUILD_SHARED_LIBS\"",[32,1081,1082],{"class":42},": ",[32,1084,1085],{"class":55},"\"ON\"\n",[10,1087,1088],{},"or",[22,1090,1092],{"className":1070,"code":1091,"language":1072,"meta":27,"style":27},"\"BUILD_SHARED_LIBS\": \"OFF\"\n",[29,1093,1094],{"__ignoreMap":27},[32,1095,1096,1098,1100],{"class":34,"line":35},[32,1097,1079],{"class":55},[32,1099,1082],{"class":42},[32,1101,1102],{"class":55},"\"OFF\"\n",[10,1104,1105],{},"In this way, the same template can switch between dynamic and static libraries through configuration.",[14,1107,1109],{"id":1108},"add-macro-definition","Add macro definition",[10,1111,1112],{},"Add macros to a specific target:",[22,1114,1116],{"className":24,"code":1115,"language":26,"meta":27,"style":27},"target_compile_definitions(${PREFIX}_src_lib\n  PRIVATE\n    LIB1_ENABLE_LOG\n)\n",[29,1117,1118,1129,1133,1138],{"__ignoreMap":27},[32,1119,1120,1123,1125,1127],{"class":34,"line":35},[32,1121,1122],{"class":38},"target_compile_definitions",[32,1124,227],{"class":42},[32,1126,46],{"class":38},[32,1128,317],{"class":42},[32,1130,1131],{"class":34,"line":52},[32,1132,386],{"class":105},[32,1134,1135],{"class":34,"line":59},[32,1136,1137],{"class":42},"    LIB1_ENABLE_LOG\n",[32,1139,1140],{"class":34,"line":65},[32,1141,68],{"class":42},[10,1143,1144],{},"Used in C++:",[22,1146,1148],{"className":160,"code":1147,"language":162,"meta":27,"style":27},"#ifdef LIB1_ENABLE_LOG\n\u002F\u002F log code\n#endif\n",[29,1149,1150,1158,1163],{"__ignoreMap":27},[32,1151,1152,1155],{"class":34,"line":35},[32,1153,1154],{"class":38},"#ifdef",[32,1156,1157],{"class":105}," LIB1_ENABLE_LOG\n",[32,1159,1160],{"class":34,"line":52},[32,1161,1162],{"class":408},"\u002F\u002F log code\n",[32,1164,1165],{"class":34,"line":59},[32,1166,1167],{"class":38},"#endif\n",[10,1169,1170],{},"Macro with values:",[22,1172,1174],{"className":24,"code":1173,"language":26,"meta":27,"style":27},"target_compile_definitions(${PREFIX}_src_lib\n  PRIVATE\n    LIB1_VERSION=\"1.0.0\"\n)\n",[29,1175,1176,1186,1190,1198],{"__ignoreMap":27},[32,1177,1178,1180,1182,1184],{"class":34,"line":35},[32,1179,1122],{"class":38},[32,1181,227],{"class":42},[32,1183,46],{"class":38},[32,1185,317],{"class":42},[32,1187,1188],{"class":34,"line":52},[32,1189,386],{"class":105},[32,1191,1192,1195],{"class":34,"line":59},[32,1193,1194],{"class":42},"    LIB1_VERSION=",[32,1196,1197],{"class":55},"\"1.0.0\"\n",[32,1199,1200],{"class":34,"line":65},[32,1201,68],{"class":42},[10,1203,1204],{},"Visibility selection:",[967,1206,1207,1217],{},[970,1208,1209],{},[973,1210,1211,1214],{},[976,1212,1213],{"align":978},"Keywords",[976,1215,1216],{"align":978},"Scene",[987,1218,1219,1229,1239],{},[973,1220,1221,1226],{},[992,1222,1223],{"align":978},[29,1224,1225],{},"PRIVATE",[992,1227,1228],{"align":978},"Only affects this repository's source code.",[973,1230,1231,1236],{},[992,1232,1233],{"align":978},[29,1234,1235],{},"PUBLIC",[992,1237,1238],{"align":978},"This library's source code and its users both require this macro.",[973,1240,1241,1245],{},[992,1242,1243],{"align":978},[29,1244,840],{},[992,1246,1247],{"align":978},"This target is not used internally; it is only passed to users.",[14,1249,1251],{"id":1250},"add-compilation-options","Add compilation options",[10,1253,1254],{},"Add individual options for a specific library:",[22,1256,1258],{"className":24,"code":1257,"language":26,"meta":27,"style":27},"target_compile_options(${PREFIX}_src_lib\n  PRIVATE\n    -Wshadow\n)\n",[29,1259,1260,1271,1275,1280],{"__ignoreMap":27},[32,1261,1262,1265,1267,1269],{"class":34,"line":35},[32,1263,1264],{"class":38},"target_compile_options",[32,1266,227],{"class":42},[32,1268,46],{"class":38},[32,1270,317],{"class":42},[32,1272,1273],{"class":34,"line":52},[32,1274,386],{"class":105},[32,1276,1277],{"class":34,"line":59},[32,1278,1279],{"class":42},"    -Wshadow\n",[32,1281,1282],{"class":34,"line":65},[32,1283,68],{"class":42},[10,1285,1286],{},"Not recommended to use global:",[22,1288,1290],{"className":24,"code":1289,"language":26,"meta":27,"style":27},"add_compile_options(-Wshadow)\n",[29,1291,1292],{"__ignoreMap":27},[32,1293,1294,1297],{"class":34,"line":35},[32,1295,1296],{"class":38},"add_compile_options",[32,1298,1299],{"class":42},"(-Wshadow)\n",[10,1301,1302],{},"Because global options affect all targets, which is not conducive to troubleshooting.",[14,1304,1306],{"id":1305},"add-include-path","Add include path",[10,1308,1309],{},"Recommended:",[22,1311,1313],{"className":24,"code":1312,"language":26,"meta":27,"style":27},"target_include_directories(${PREFIX}_src_lib\n  PRIVATE\n    ${CMAKE_CURRENT_LIST_DIR}\u002Fsome_private_include\n)\n",[29,1314,1315,1325,1329,1337],{"__ignoreMap":27},[32,1316,1317,1319,1321,1323],{"class":34,"line":35},[32,1318,310],{"class":38},[32,1320,227],{"class":42},[32,1322,46],{"class":38},[32,1324,317],{"class":42},[32,1326,1327],{"class":34,"line":52},[32,1328,386],{"class":105},[32,1330,1331,1334],{"class":34,"line":59},[32,1332,1333],{"class":38},"    ${CMAKE_CURRENT_LIST_DIR}",[32,1335,1336],{"class":42},"\u002Fsome_private_include\n",[32,1338,1339],{"class":34,"line":65},[32,1340,68],{"class":42},[10,1342,1343],{},"Not recommended:",[22,1345,1347],{"className":24,"code":1346,"language":26,"meta":27,"style":27},"include_directories(some_private_include)\n",[29,1348,1349],{"__ignoreMap":27},[32,1350,1351,1354],{"class":34,"line":35},[32,1352,1353],{"class":38},"include_directories",[32,1355,1356],{"class":42},"(some_private_include)\n",[10,1358,1359],{},"Reason:",[1361,1362,1363,1369],"ol",{},[1364,1365,1366,1368],"li",{},[29,1367,1353],{}," has a directory-level impact, covering a broader scope.",[1364,1370,1371],{},"Clearly indicate which target requires this path.",[14,1373,1375],{"id":1374},"add-a-test-directory","Add a test directory",[10,1377,1378],{},"If you want to add tests later, you can add:",[22,1380,1383],{"className":1381,"code":1382,"language":88,"meta":27},[86],"test\u002F\n└── CMakeLists.txt\n",[29,1384,1382],{"__ignoreMap":27},[10,1386,1387],{},"Add at the top level:",[22,1389,1391],{"className":24,"code":1390,"language":26,"meta":27,"style":27},"include(CTest)\n\nif(BUILD_TESTING)\n  add_subdirectory(test)\nendif()\n",[29,1392,1393,1401,1405,1413,1425],{"__ignoreMap":27},[32,1394,1395,1398],{"class":34,"line":35},[32,1396,1397],{"class":38},"include",[32,1399,1400],{"class":42},"(CTest)\n",[32,1402,1403],{"class":34,"line":52},[32,1404,241],{"emptyLinePlaceholder":240},[32,1406,1407,1410],{"class":34,"line":59},[32,1408,1409],{"class":38},"if",[32,1411,1412],{"class":42},"(BUILD_TESTING)\n",[32,1414,1415,1418,1420,1423],{"class":34,"line":65},[32,1416,1417],{"class":38},"  add_subdirectory",[32,1419,227],{"class":42},[32,1421,1422],{"class":38},"test",[32,1424,68],{"class":42},[32,1426,1427,1430],{"class":34,"line":258},[32,1428,1429],{"class":38},"endif",[32,1431,1432],{"class":42},"()\n",[10,1434,1435],{},"In preset, you can control:",[22,1437,1439],{"className":1070,"code":1438,"language":1072,"meta":27,"style":27},"\"BUILD_TESTING\": \"ON\"\n",[29,1440,1441],{"__ignoreMap":27},[32,1442,1443,1446,1448],{"class":34,"line":35},[32,1444,1445],{"class":55},"\"BUILD_TESTING\"",[32,1447,1082],{"class":42},[32,1449,1085],{"class":55},[10,1451,1452],{},"However, the current template does not allow adding new examples, and whether to include the test directory depends on project needs.",[14,1454,1456],{"id":1455},"clean-build-and-installation-directories","Clean build and installation directories",[10,1458,1459,1460,1463],{},"Since the template already contains ",[29,1461,1462],{},".gitignore",", ignore:",[22,1465,1469],{"className":1466,"code":1467,"language":1468,"meta":27,"style":27},"language-gitignore shiki shiki-themes github-light github-dark","build\u002F\ninstall\u002F\nlog\u002F\n","gitignore",[29,1470,1471,1476,1481],{"__ignoreMap":27},[32,1472,1473],{"class":34,"line":35},[32,1474,1475],{},"build\u002F\n",[32,1477,1478],{"class":34,"line":52},[32,1479,1480],{},"install\u002F\n",[32,1482,1483],{"class":34,"line":59},[32,1484,1485],{},"log\u002F\n",[10,1487,1488],{},"So these directories are all generated artifacts.",[10,1490,1491],{},"Clear the debug output.",[22,1493,1495],{"className":96,"code":1494,"language":98,"meta":27,"style":27},"rm -rf build\u002Flinux-debug install\u002Flinux-debug\n",[29,1496,1497],{"__ignoreMap":27},[32,1498,1499,1502,1505,1508],{"class":34,"line":35},[32,1500,1501],{"class":105},"rm",[32,1503,1504],{"class":108}," -rf",[32,1506,1507],{"class":55}," build\u002Flinux-debug",[32,1509,1510],{"class":55}," install\u002Flinux-debug\n",[10,1512,1513],{},"Clean Release:",[22,1515,1517],{"className":96,"code":1516,"language":98,"meta":27,"style":27},"rm -rf build\u002Flinux-release install\u002Flinux-release\n",[29,1518,1519],{"__ignoreMap":27},[32,1520,1521,1523,1525,1528],{"class":34,"line":35},[32,1522,1501],{"class":105},[32,1524,1504],{"class":108},[32,1526,1527],{"class":55}," build\u002Flinux-release",[32,1529,1530],{"class":55}," install\u002Flinux-release\n",[10,1532,1533],{},"Reconstruct:",[22,1535,1537],{"className":96,"code":1536,"language":98,"meta":27,"style":27},"cmake --preset linux-debug\ncmake --build --preset linux-debug\ncmake --install build\u002Flinux-debug\n",[29,1538,1539,1547,1557],{"__ignoreMap":27},[32,1540,1541,1543,1545],{"class":34,"line":35},[32,1542,26],{"class":105},[32,1544,112],{"class":108},[32,1546,115],{"class":55},[32,1548,1549,1551,1553,1555],{"class":34,"line":52},[32,1550,26],{"class":105},[32,1552,109],{"class":108},[32,1554,112],{"class":108},[32,1556,115],{"class":55},[32,1558,1559,1561,1564],{"class":34,"line":59},[32,1560,26],{"class":105},[32,1562,1563],{"class":108}," --install",[32,1565,1566],{"class":55}," build\u002Flinux-debug\n",[14,1568,1570,1571,1574],{"id":1569},"为什么安装目录里可能是-lib64","为什么安装目录里可能是 ",[29,1572,1573],{},"lib64","？",[10,1576,1577],{},"This template is used for:",[22,1579,1581],{"className":24,"code":1580,"language":26,"meta":27,"style":27},"include(GNUInstallDirs)\n",[29,1582,1583],{"__ignoreMap":27},[32,1584,1585,1587],{"class":34,"line":35},[32,1586,1397],{"class":38},[32,1588,1589],{"class":42},"(GNUInstallDirs)\n",[10,1591,1592],{},"When installing the library, use:",[22,1594,1596],{"className":24,"code":1595,"language":26,"meta":27,"style":27},"LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}\n",[29,1597,1598],{"__ignoreMap":27},[32,1599,1600,1603],{"class":34,"line":35},[32,1601,1602],{"class":42},"LIBRARY DESTINATION ",[32,1604,464],{"class":38},[10,1606,1607],{},"On some Linux distributions:",[22,1609,1612],{"className":1610,"code":1611,"language":88,"meta":27},[86],"CMAKE_INSTALL_LIBDIR = lib64\n",[29,1613,1611],{"__ignoreMap":27},[10,1615,1616],{},"So the installation result is:",[22,1618,1621],{"className":1619,"code":1620,"language":88,"meta":27},[86],"install\u002Flinux-debug\u002Flib64\u002F\n",[29,1622,1620],{"__ignoreMap":27},[10,1624,1625],{},"This is not an error, but a system convention.",[10,1627,1628],{},"Please do not handwrite:",[22,1630,1632],{"className":24,"code":1631,"language":26,"meta":27,"style":27},"LIBRARY DESTINATION lib\n",[29,1633,1634],{"__ignoreMap":27},[32,1635,1636],{"class":34,"line":35},[32,1637,1631],{"class":42},[10,1639,1640],{},"Otherwise, it would bypass CMake's system directory check.",[14,1642,1644,1645],{"id":1643},"runtime-error-cannot-find-so","Runtime error: cannot find ",[29,1646,1005],{},[10,1648,1649],{},"Errors similar to:",[22,1651,1654],{"className":1652,"code":1653,"language":88,"meta":27},[86],"error while loading shared libraries: liblib1_src_lib.so: cannot open shared object file\n",[29,1655,1653],{"__ignoreMap":27},[10,1657,1658],{},"Common causes:",[1361,1660,1661,1667,1670,1676],{},[1364,1662,1663,1664,199],{},"was not executed ",[29,1665,1666],{},"cmake --install ...",[1364,1668,1669],{},"The executable file is not run from the installation directory.",[1364,1671,1672,1675],{},[29,1673,1674],{},"INSTALL_RPATH"," is not set up correctly.",[1364,1677,1678,1679,1682,1683,199],{},"Manually adjusted the relative positions of ",[29,1680,1681],{},"bin\u002F"," and ",[29,1684,1685],{},"lib64\u002F",[10,1687,1688],{},"This template settings:",[22,1690,1692],{"className":24,"code":1691,"language":26,"meta":27,"style":27},"set_target_properties(${PROJECT_NAME} PROPERTIES\n  INSTALL_RPATH \"$ORIGIN\u002F..\u002F${CMAKE_INSTALL_LIBDIR}\"\n)\n",[29,1693,1694,1706,1712],{"__ignoreMap":27},[32,1695,1696,1698,1700,1703],{"class":34,"line":35},[32,1697,662],{"class":38},[32,1699,227],{"class":42},[32,1701,1702],{"class":38},"${PROJECT_NAME}",[32,1704,1705],{"class":42}," PROPERTIES\n",[32,1707,1708,1710],{"class":34,"line":52},[32,1709,671],{"class":670},[32,1711,674],{"class":55},[32,1713,1714],{"class":34,"line":59},[32,1715,68],{"class":42},[10,1717,1718],{},"So just keep this structure:",[22,1720,1723],{"className":1721,"code":1722,"language":88,"meta":27},[86],"install\u002Flinux-debug\u002F\n├── bin\u002F\n│   └── cmake_template\n└── lib64\u002F\n    ├── liblib1_src_lib.so\n    └── liblib2_src_lib.so\n",[29,1724,1722],{"__ignoreMap":27},[14,1726,1728],{"id":1727},"cmake-cannot-find-eigen-or-opencv","CMake cannot find Eigen or OpenCV",[10,1730,1731],{},"First, confirm the installation of the development package.",[10,1733,1734],{},"Eigen：",[22,1736,1738],{"className":96,"code":1737,"language":98,"meta":27,"style":27},"sudo apt install libeigen3-dev\nsudo dnf install eigen3-devel\n",[29,1739,1740,1754],{"__ignoreMap":27},[32,1741,1742,1745,1748,1751],{"class":34,"line":35},[32,1743,1744],{"class":105},"sudo",[32,1746,1747],{"class":55}," apt",[32,1749,1750],{"class":55}," install",[32,1752,1753],{"class":55}," libeigen3-dev\n",[32,1755,1756,1758,1761,1763],{"class":34,"line":52},[32,1757,1744],{"class":105},[32,1759,1760],{"class":55}," dnf",[32,1762,1750],{"class":55},[32,1764,1765],{"class":55}," eigen3-devel\n",[10,1767,1768],{},"OpenCV：",[22,1770,1772],{"className":96,"code":1771,"language":98,"meta":27,"style":27},"sudo apt install libopencv-dev\nsudo dnf install opencv-devel\n",[29,1773,1774,1785],{"__ignoreMap":27},[32,1775,1776,1778,1780,1782],{"class":34,"line":35},[32,1777,1744],{"class":105},[32,1779,1747],{"class":55},[32,1781,1750],{"class":55},[32,1783,1784],{"class":55}," libopencv-dev\n",[32,1786,1787,1789,1791,1793],{"class":34,"line":52},[32,1788,1744],{"class":105},[32,1790,1760],{"class":55},[32,1792,1750],{"class":55},[32,1794,1795],{"class":55}," opencv-devel\n",[10,1797,1798],{},"Reconfigure again:",[22,1800,1802],{"className":96,"code":1801,"language":98,"meta":27,"style":27},"cmake --preset linux-debug\n",[29,1803,1804],{"__ignoreMap":27},[32,1805,1806,1808,1810],{"class":34,"line":35},[32,1807,26],{"class":105},[32,1809,112],{"class":108},[32,1811,115],{"class":55},[10,1813,1814],{},"If the library is installed in a non-standard path, add:",[22,1816,1818],{"className":96,"code":1817,"language":98,"meta":27,"style":27},"cmake --preset linux-debug -DCMAKE_PREFIX_PATH=\u002Fopt\u002Fmy_library\n",[29,1819,1820],{"__ignoreMap":27},[32,1821,1822,1824,1826,1829],{"class":34,"line":35},[32,1823,26],{"class":105},[32,1825,112],{"class":108},[32,1827,1828],{"class":55}," linux-debug",[32,1830,1831],{"class":108}," -DCMAKE_PREFIX_PATH=\u002Fopt\u002Fmy_library\n",[10,1833,1834],{},"Or write to preset:",[22,1836,1838],{"className":1070,"code":1837,"language":1072,"meta":27,"style":27},"\"CMAKE_PREFIX_PATH\": \"\u002Fopt\u002Fmy_library\"\n",[29,1839,1840],{"__ignoreMap":27},[32,1841,1842,1845,1847],{"class":34,"line":35},[32,1843,1844],{"class":55},"\"CMAKE_PREFIX_PATH\"",[32,1846,1082],{"class":42},[32,1848,1849],{"class":55},"\"\u002Fopt\u002Fmy_library\"\n",[14,1851,1853],{"id":1852},"ccache-causes-configure-to-fail","ccache causes configure to fail",[10,1855,1856,1857,1682,1860,1863],{},"In certain environments, ",[29,1858,1859],{},"gcc",[29,1861,1862],{},"g++"," may point to ccache wrappers. If the ccache directory is not writable, CMake might fail when checking the compiler.",[10,1865,1866],{},"Temporary fix:",[22,1868,1870],{"className":96,"code":1869,"language":98,"meta":27,"style":27},"CC=\u002Fusr\u002Fbin\u002Fgcc CXX=\u002Fusr\u002Fbin\u002Fg++ cmake --fresh --preset linux-debug\n",[29,1871,1872],{"__ignoreMap":27},[32,1873,1874,1877,1880,1883,1886,1888,1891,1894,1897,1899],{"class":34,"line":35},[32,1875,1876],{"class":42},"CC",[32,1878,1879],{"class":38},"=",[32,1881,1882],{"class":55},"\u002Fusr\u002Fbin\u002Fgcc",[32,1884,1885],{"class":42}," CXX",[32,1887,1879],{"class":38},[32,1889,1890],{"class":55},"\u002Fusr\u002Fbin\u002Fg++",[32,1892,1893],{"class":105}," cmake",[32,1895,1896],{"class":108}," --fresh",[32,1898,112],{"class":108},[32,1900,115],{"class":55},[10,1902,1903],{},"This is merely for verification or handling under special conditions and is not recommended to be hardcoded into templates.",[10,1905,1906],{},"If you really want to specify the compiler in the preset, you can add:",[22,1908,1910],{"className":1070,"code":1909,"language":1072,"meta":27,"style":27},"\"cacheVariables\": {\n  \"CMAKE_C_COMPILER\": \"\u002Fusr\u002Fbin\u002Fgcc\",\n  \"CMAKE_CXX_COMPILER\": \"\u002Fusr\u002Fbin\u002Fg++\"\n}\n",[29,1911,1912,1920,1933,1943],{"__ignoreMap":27},[32,1913,1914,1917],{"class":34,"line":35},[32,1915,1916],{"class":55},"\"cacheVariables\"",[32,1918,1919],{"class":42},": {\n",[32,1921,1922,1925,1927,1930],{"class":34,"line":52},[32,1923,1924],{"class":108},"  \"CMAKE_C_COMPILER\"",[32,1926,1082],{"class":42},[32,1928,1929],{"class":55},"\"\u002Fusr\u002Fbin\u002Fgcc\"",[32,1931,1932],{"class":42},",\n",[32,1934,1935,1938,1940],{"class":34,"line":59},[32,1936,1937],{"class":108},"  \"CMAKE_CXX_COMPILER\"",[32,1939,1082],{"class":42},[32,1941,1942],{"class":55},"\"\u002Fusr\u002Fbin\u002Fg++\"\n",[32,1944,1945],{"class":34,"line":65},[32,1946,1947],{"class":42},"}\n",[10,1949,1950],{},"But this reduces template versatility, so it is not written by default.",[14,1952,1954],{"id":1953},"clangd-cannot-find-project-headers-or-third-party-libraries","Clangd cannot find project headers or third-party libraries.",[10,1956,1957,1958,1961],{},"This usually happens because Clangd doesn't have the correct compilation database (",[29,1959,1960],{},"compile_commands.json",") or includes paths.",[10,1963,1964],{},"Here are the common solutions:",[1966,1967,1969,1970,1972],"h3",{"id":1968},"_1-generate-compile_commandsjson-most-common-fix","1. Generate ",[29,1971,1960],{}," (Most Common Fix)",[10,1974,1975],{},"This file tells Clangd exactly how your project is built.",[1977,1978,1979,2008,2042],"ul",{},[1364,1980,1981,1985,1986,2001,2004,2005,2007],{},[1982,1983,1984],"strong",{},"For CMake projects:"," Run CMake with the flag:",[22,1987,1989],{"className":96,"code":1988,"language":98,"meta":27,"style":27},"cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .\n",[29,1990,1991],{"__ignoreMap":27},[32,1992,1993,1995,1998],{"class":34,"line":35},[32,1994,26],{"class":105},[32,1996,1997],{"class":108}," -DCMAKE_EXPORT_COMPILE_COMMANDS=ON",[32,1999,2000],{"class":55}," .\n",[2002,2003],"br",{},"This will create a ",[29,2006,1960],{}," file in your build directory.",[1364,2009,2010,2013,2014],{},[1982,2011,2012],{},"For Makefile or other build systems:"," Use tools like:",[1977,2015,2016,2030],{},[1364,2017,2018,1082,2027],{},[2019,2020,2024],"a",{"href":2021,"rel":2022},"https:\u002F\u002Fgithub.com\u002Frizsotto\u002FBear",[2023],"nofollow",[29,2025,2026],{},"bear",[29,2028,2029],{},"bear -- make your-target",[1364,2031,2032,1082,2039],{},[2019,2033,2036],{"href":2034,"rel":2035},"https:\u002F\u002Fgithub.com\u002Fnicktimko\u002Fcompiledb",[2023],[29,2037,2038],{},"compiledb",[29,2040,2041],{},"make-dry-run | compiledb",[1364,2043,2044,2047,2048,2050,2051,2054],{},[1982,2045,2046],{},"Move the file:"," Copy the generated ",[29,2049,1960],{}," to your project's ",[1982,2052,2053],{},"root directory",", where Clangd can find it.",[1966,2056,2058,2059,2062],{"id":2057},"_2-configure-the-clangd-file","2. Configure the ",[29,2060,2061],{},".clangd"," File",[10,2064,2065,2066,2068],{},"Create a ",[29,2067,2061],{}," file in your project root to explicitly add include paths.",[22,2070,2074],{"className":2071,"code":2072,"language":2073,"meta":27,"style":27},"language-yaml shiki shiki-themes github-light github-dark","CompileFlags:\n  Add:\n    - -I\u002Fpath\u002Fto\u002Fyour\u002Fproject\u002Fincludes\n    - -I\u002Fpath\u002Fto\u002Fyour\u002Fthird-party\u002Flib\u002Finclude\n","yaml",[29,2075,2076,2085,2092,2100],{"__ignoreMap":27},[32,2077,2078,2082],{"class":34,"line":35},[32,2079,2081],{"class":2080},"s9eBZ","CompileFlags",[32,2083,2084],{"class":42},":\n",[32,2086,2087,2090],{"class":34,"line":52},[32,2088,2089],{"class":2080},"  Add",[32,2091,2084],{"class":42},[32,2093,2094,2097],{"class":34,"line":59},[32,2095,2096],{"class":42},"    - ",[32,2098,2099],{"class":55},"-I\u002Fpath\u002Fto\u002Fyour\u002Fproject\u002Fincludes\n",[32,2101,2102,2104],{"class":34,"line":65},[32,2103,2096],{"class":42},[32,2105,2106],{"class":55},"-I\u002Fpath\u002Fto\u002Fyour\u002Fthird-party\u002Flib\u002Finclude\n",[1966,2108,2110,2111],{"id":2109},"_3-verify-your-compile_commandsjson","3. Verify Your ",[29,2112,1960],{},[10,2114,2115,2116,1682,2119,2122],{},"Open the file and check if the paths listed in the ",[29,2117,2118],{},"\"file\"",[29,2120,2121],{},"\"command\""," fields actually exist on your machine.",[1966,2124,2126],{"id":2125},"_4-restart-the-lsp","4. Restart the LSP",[10,2128,2129],{},"After making changes, restart the Clangd language server in your editor (e.g., VSCode, Neovim) for it to reload the configuration.",[10,2131,2132],{},"如果工程能够正常编译，但VSCode仍然提示找不到项目头文件、Eigen库或其他依赖项，请尝试以下步骤进行排查。通常这类问题是由于VSCode的C\u002FC++扩展未能正确读取项目编译配置所导致的。",[10,2134,2135,2138],{},[1982,2136,2137],{},"1. 确认构建系统配置","\n首先，确保您的项目构建系统（例如CMake或Make）能够正确生成用于IDE的配置文件。",[1977,2140,2141,2150],{},[1364,2142,2143,2146,2147,2149],{},[1982,2144,2145],{},"对于CMake项目","：重新运行CMake配置步骤，确保生成",[29,2148,1960],{},"文件。这是VSCode等工具理解项目结构和编译命令的关键。",[1364,2151,2152,2155,2156,2158],{},[1982,2153,2154],{},"对于Makefile项目","：您可能需要手动配置包含路径，或通过工具生成",[29,2157,1960],{},"。",[10,2160,2161,2164,2165,2168,2169,2172,2173,2176],{},[1982,2162,2163],{},"2. 配置VSCode的C\u002FC++扩展","\n打开命令面板（",[29,2166,2167],{},"Ctrl+Shift+P","），运行“C\u002FC++: Edit Configurations (JSON)”命令。这将打开或创建",[29,2170,2171],{},".vscode\u002Fc_cpp_properties.json","文件。您需要确保其中的",[29,2174,2175],{},"includePath","包含了所有必需的头文件路径。",[1977,2178,2179,2186],{},[1364,2180,2181,2182,2185],{},"可以使用",[29,2183,2184],{},"${workspaceFolder}\u002F**","来递归包含工作区下的所有路径。",[1364,2187,2188],{},"对于系统或第三方库（如Eigen），您需要添加其绝对路径或相对于工作区的路径。",[10,2190,2191,2194,2195,2198,2199,2202],{},[1982,2192,2193],{},"3. 设置编译器路径","\n在",[29,2196,2197],{},"c_cpp_properties.json","文件中，请确保",[29,2200,2201],{},"compilerPath","正确指向您项目实际使用的编译器（如GCC、Clang或MSVC）。VSCode的IntelliSense引擎需要它来查找系统头文件。",[10,2204,2205,2208],{},[1982,2206,2207],{},"4. 重建IntelliSense数据库","\n有时，VSCode的缓存数据库可能已过时。可以尝试以下操作：",[1977,2210,2211,2214],{},[1364,2212,2213],{},"关闭并重新打开VSCode。",[1364,2215,2216],{},"在命令面板中运行“C\u002FC++: Reset IntelliSense Database”命令。",[10,2218,2219,2220,2222],{},"通过以上步骤，通常可以解决VSCode与项目构建系统配置不同步导致的头文件识别问题。如果问题依旧，请检查项目的CMake或构建脚本中是否定义了可能影响IDE解析的特殊宏或变量。\nOpenCV, it's usually not that ",[29,2221,310],{}," was written wrong, but rather that clangd is.\nHave not read the compilation database generated by CMake.",[10,2224,2225],{},"First, confirm the existence of the Debug compile database:",[22,2227,2229],{"className":96,"code":2228,"language":98,"meta":27,"style":27},"cmake --preset linux-debug\ntest -f build\u002Flinux-debug\u002Fcompile_commands.json && echo \"找到了编译数据库\"\n",[29,2230,2231,2239],{"__ignoreMap":27},[32,2232,2233,2235,2237],{"class":34,"line":35},[32,2234,26],{"class":105},[32,2236,112],{"class":108},[32,2238,115],{"class":55},[32,2240,2241,2243,2246,2249,2252,2255],{"class":34,"line":52},[32,2242,1422],{"class":108},[32,2244,2245],{"class":108}," -f",[32,2247,2248],{"class":55}," build\u002Flinux-debug\u002Fcompile_commands.json",[32,2250,2251],{"class":42}," && ",[32,2253,2254],{"class":108},"echo",[32,2256,2257],{"class":55}," \"找到了编译数据库\"\n",[10,2259,2260,2261,2263],{},"Then create ",[29,2262,2061],{}," in the project root directory:",[22,2265,2267],{"className":2071,"code":2266,"language":2073,"meta":27,"style":27},"CompileFlags:\n  CompilationDatabase: build\u002Flinux-debug\n",[29,2268,2269,2275],{"__ignoreMap":27},[32,2270,2271,2273],{"class":34,"line":35},[32,2272,2081],{"class":2080},[32,2274,2084],{"class":42},[32,2276,2277,2280,2282],{"class":34,"line":52},[32,2278,2279],{"class":2080},"  CompilationDatabase",[32,2281,1082],{"class":42},[32,2283,2284],{"class":55},"build\u002Flinux-debug\n",[10,2286,2287],{},"In the VSCode command panel, run:",[22,2289,2292],{"className":2290,"code":2291,"language":88,"meta":27},[86],"clangd: Restart language server\n",[29,2293,2291],{"__ignoreMap":27},[10,2295,2296,2297,2300],{},"Then check the logs at ",[29,2298,2299],{},"查看 -> 输出 -> clangd",". Normal logs should include:",[22,2302,2305],{"className":2303,"code":2304,"language":88,"meta":27},[86],"Loaded compilation database from ...\u002Fbuild\u002Flinux-debug\u002Fcompile_commands.json\n",[29,2306,2304],{"__ignoreMap":27},[10,2308,2309],{},"If the log shows:",[22,2311,2314],{"className":2312,"code":2313,"language":88,"meta":27},[86],"Failed to find compilation database\ncommand clangd fallback\n",[29,2315,2313],{"__ignoreMap":27},[10,2317,2318],{},"说明 clangd 仍在使用回退参数，项目的 include 路径、第三方库\nPaths and C++ standards might both be misidentified.",[10,2320,2321,2322,2324,2325,2327,2328,2158],{},"About ",[29,2323,1960],{},", ",[29,2326,2061],{},", Debug\u002FRelease database switching, and\nFor complete command line verification instructions, see\n",[2019,2329,2331],{"href":2330},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","CMakePresets and Build\u002FInstall",[14,2333,2335],{"id":2334},"vscode-doesnt-recognize-the-preset","VSCode doesn't recognize the preset.",[10,2337,2338],{},"Check:",[1361,2340,2341,2344,2347,2354],{},[1364,2342,2343],{},"To check if the CMake Tools extension is installed:",[1364,2345,2346],{},"Is the opened directory the project root directory?",[1364,2348,2349,2350,2353],{},"Is ",[29,2351,2352],{},"CMakePresets.json"," in the project root directory?",[1364,2355,2356],{},"Is JSON valid?",[10,2358,2359],{},"Command line check:",[22,2361,2363],{"className":96,"code":2362,"language":98,"meta":27,"style":27},"cmake --list-presets\n",[29,2364,2365],{"__ignoreMap":27},[32,2366,2367,2369],{"class":34,"line":35},[32,2368,26],{"class":105},[32,2370,2371],{"class":108}," --list-presets\n",[10,2373,2374],{},"If the command line can show:",[22,2376,2379],{"className":2377,"code":2378,"language":88,"meta":27},[86],"linux-debug\nlinux-release\n",[29,2380,2378],{"__ignoreMap":27},[10,2382,2383],{},"This indicates the preset file is fine.",[14,2385,2387],{"id":2386},"vscode-cmake-tools-cannot-run-or-debug","VSCode CMake Tools cannot run or debug",[10,2389,2390],{},"CMake Tools requires several things to work correctly together to run or debug.",[1361,2392,2393,2396,2399,2402],{},[1364,2394,2395],{},"CMake Tools supports CMake Presets, which allow you to define and share build configurations easily.",[1364,2397,2398],{},"The project has been configured and built.",[1364,2400,2401],{},"CMake Tools has already selected the executable target.",[1364,2403,2404],{},"If you need to debug, GDB can start normally.",[1966,2406,2408],{"id":2407},"check-preset","check preset",[10,2410,2411,2412,199],{},"First, confirm that VSCode opens the project root directory and can recognize ",[29,2413,2352],{},[10,2415,2416],{},"You can check it via the command line like this:",[22,2418,2419],{"className":96,"code":2362,"language":98,"meta":27,"style":27},[29,2420,2421],{"__ignoreMap":27},[32,2422,2423,2425],{"class":34,"line":35},[32,2424,26],{"class":105},[32,2426,2371],{"class":108},[10,2428,2429],{},"If you can see:",[22,2431,2433],{"className":2432,"code":2378,"language":88,"meta":27},[86],[29,2434,2378],{"__ignoreMap":27},[10,2436,2383],{},[10,2438,2439],{},"In VSCode, you need to select Configure Preset, for example:",[22,2441,2444],{"className":2442,"code":2443,"language":88,"meta":27},[86],"Linux Debug\n",[29,2445,2443],{"__ignoreMap":27},[10,2447,2448],{},"Then run Configure.",[1966,2450,2452],{"id":2451},"check-target","check target",[10,2454,2455],{},"CMake Tools needs to know which executable target you want to run or debug.",[10,2457,2458],{},"The executable target in the template is:",[22,2460,2462],{"className":2461,"code":787,"language":88,"meta":27},[86],[29,2463,787],{"__ignoreMap":27},[10,2465,2466,2467,199],{},"If the run or debug button is unavailable, first confirm that CMake Tools has selected ",[29,2468,2469],{},"cmake_template",[1966,2471,2473],{"id":2472},"check-if-it-has-been-built","check if it has been built",[10,2475,2476],{},"CMake Tools typically runs or debugs executables from the build directory, for example:",[22,2478,2481],{"className":2479,"code":2480,"language":88,"meta":27},[86],"build\u002Flinux-debug\u002Fsrc\u002Fcmake_template\n",[29,2482,2480],{"__ignoreMap":27},[10,2484,2485],{},"If you haven't built yet, this file won't exist, and you won't be able to start running or debugging.",[10,2487,2488],{},"First, execute:",[22,2490,2491],{"className":96,"code":121,"language":98,"meta":27,"style":27},[29,2492,2493,2501],{"__ignoreMap":27},[32,2494,2495,2497,2499],{"class":34,"line":35},[32,2496,26],{"class":105},[32,2498,112],{"class":108},[32,2500,115],{"class":55},[32,2502,2503,2505,2507,2509],{"class":34,"line":52},[32,2504,26],{"class":105},[32,2506,109],{"class":108},[32,2508,112],{"class":108},[32,2510,115],{"class":55},[10,2512,2513],{},"or run Configure and Build in VSCode CMake Tools.",[1966,2515,2517],{"id":2516},"check-gdb","Check gdb",[10,2519,2520],{},"If you're just running a program normally, GDB isn't necessarily required. However, if you need to debug, you should confirm that GDB is installed.",[10,2522,2359],{},[22,2524,2526],{"className":96,"code":2525,"language":98,"meta":27,"style":27},"gdb --version\n",[29,2527,2528],{"__ignoreMap":27},[32,2529,2530,2533],{"class":34,"line":35},[32,2531,2532],{"class":105},"gdb",[32,2534,2535],{"class":108}," --version\n",[10,2537,2538],{},"If not installed, then execute:",[22,2540,2542],{"className":96,"code":2541,"language":98,"meta":27,"style":27},"sudo apt install gdb\n",[29,2543,2544],{"__ignoreMap":27},[32,2545,2546,2548,2550,2552],{"class":34,"line":35},[32,2547,1744],{"class":105},[32,2549,1747],{"class":55},[32,2551,1750],{"class":55},[32,2553,2554],{"class":55}," gdb\n",[10,2556,1088],{},[22,2558,2560],{"className":96,"code":2559,"language":98,"meta":27,"style":27},"sudo dnf install gdb\n",[29,2561,2562],{"__ignoreMap":27},[32,2563,2564,2566,2568,2570],{"class":34,"line":35},[32,2565,1744],{"class":105},[32,2567,1760],{"class":55},[32,2569,1750],{"class":55},[32,2571,2554],{"class":55},[1966,2573,2575],{"id":2574},"run-and-debug-without-needing-to-install-every-time","Run and debug without needing to install every time.",[10,2577,2578],{},"During daily development, CMake Tools usually operates on the build directory artifacts:",[22,2580,2582],{"className":96,"code":2581,"language":98,"meta":27,"style":27},".\u002Fbuild\u002Flinux-debug\u002Fsrc\u002Fcmake_template\n",[29,2583,2584],{"__ignoreMap":27},[32,2585,2586],{"class":34,"line":35},[32,2587,2581],{"class":105},[10,2589,2590],{},"Not an installation directory artifact:",[22,2592,2594],{"className":96,"code":2593,"language":98,"meta":27,"style":27},".\u002Finstall\u002Flinux-debug\u002Fbin\u002Fcmake_template\n",[29,2595,2596],{"__ignoreMap":27},[32,2597,2598],{"class":34,"line":35},[32,2599,2593],{"class":105},[10,2601,2602,2604],{},[29,2603,448],{}," is mainly used to verify that the installation layout, header file installation, and dynamic library RPATH are set up correctly.",[14,2606,2608,2610],{"id":2607},"gitignore-how-to-handle-vscode-configuration",[29,2609,1462],{}," How to handle VSCode configuration",[10,2612,2613],{},"This template does not rely on additional VSCode debug configuration files because CMake Tools can directly run or debug the current CMake target.",[10,2615,2616,2617,523],{},"If you don't want to commit your personal VSCode configurations to the repository, you can simply ignore ",[29,2618,2619],{},".vscode\u002F",[22,2621,2623],{"className":1466,"code":2622,"language":1468,"meta":27,"style":27},".vscode\u002F\n",[29,2624,2625],{"__ignoreMap":27},[32,2626,2627],{"class":34,"line":35},[32,2628,2622],{},[10,2630,2631],{},"You can also just ignore common local configurations:",[22,2633,2635],{"className":1466,"code":2634,"language":1468,"meta":27,"style":27},".vscode\u002Fsettings.json\n.vscode\u002Ftasks.json\n",[29,2636,2637,2642],{"__ignoreMap":27},[32,2638,2639],{"class":34,"line":35},[32,2640,2641],{},".vscode\u002Fsettings.json\n",[32,2643,2644],{"class":34,"line":52},[32,2645,2646],{},".vscode\u002Ftasks.json\n",[10,2648,2649],{},"If the team really wants to share certain VSCode configurations, such as recommended extensions or formatting settings, it can be discussed separately which files should be included in Git. Running and debugging can be delegated to CMake Tools.",[14,2651,2653],{"id":2652},"core-rules-of-the-template","Core rules of the template",[10,2655,2656],{},"Finally, here is a summary of the most important rules for this template:",[1361,2658,2659,2666,2672,2677,2680,2686,2693,2699,2712],{},[1364,2660,2661,2662,2665],{},"The top-level ",[29,2663,2664],{},"CMakeLists.txt"," only handles control functions.",[1364,2667,2668,2669,199],{},"Common compilation rules are stored in ",[29,2670,2671],{},"cmake\u002FProjectOptions.cmake",[1364,2673,2674,2675,199],{},"The main program is managed by ",[29,2676,522],{},[1364,2678,2679],{},"Each library directory manages its own source code, header files, installation, and third-party dependencies.",[1364,2681,2682,2683,199],{},"The header file path includes the module name, for example, ",[29,2684,2685],{},"lib1\u002Feigen3_test.hpp",[1364,2687,2688,2689,2692],{},"Third-party libraries are placed in the user's own ",[29,2690,2691],{},"Third-party dependencies"," block.",[1364,2694,2695,2696,2698],{},"Place build parameters in ",[29,2697,2352],{}," and do not hardcode them in the top-level CMakeLists.txt.",[1364,2700,2701,2702,2324,2705,2324,2708,2711],{},"Generate directory ",[29,2703,2704],{},"build\u002F",[29,2706,2707],{},"install\u002F",[29,2709,2710],{},"log\u002F"," exclude from Git.",[1364,2713,2714],{},"In VSCode, running and debugging are handled by CMake Tools, while command-line builds are still managed by CMakePresets.",[2716,2717,2718],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":27,"searchDepth":52,"depth":52,"links":2720},[2721,2722,2723,2724,2725,2726,2727,2728,2730,2731,2732,2733,2734,2735,2737,2739,2740,2741,2750,2751,2758,2760],{"id":16,"depth":52,"text":17},{"id":144,"depth":52,"text":145},{"id":191,"depth":52,"text":192},{"id":579,"depth":52,"text":580},{"id":711,"depth":52,"text":712},{"id":813,"depth":52,"text":814},{"id":901,"depth":52,"text":902},{"id":1027,"depth":52,"text":2729},"Use BUILD_SHARED_LIBS to control library types",{"id":1108,"depth":52,"text":1109},{"id":1250,"depth":52,"text":1251},{"id":1305,"depth":52,"text":1306},{"id":1374,"depth":52,"text":1375},{"id":1455,"depth":52,"text":1456},{"id":1569,"depth":52,"text":2736},"为什么安装目录里可能是 lib64？",{"id":1643,"depth":52,"text":2738},"Runtime error: cannot find .so",{"id":1727,"depth":52,"text":1728},{"id":1852,"depth":52,"text":1853},{"id":1953,"depth":52,"text":1954,"children":2742},[2743,2745,2747,2749],{"id":1968,"depth":59,"text":2744},"1. Generate compile_commands.json (Most Common Fix)",{"id":2057,"depth":59,"text":2746},"2. Configure the .clangd File",{"id":2109,"depth":59,"text":2748},"3. Verify Your compile_commands.json",{"id":2125,"depth":59,"text":2126},{"id":2334,"depth":52,"text":2335},{"id":2386,"depth":52,"text":2387,"children":2752},[2753,2754,2755,2756,2757],{"id":2407,"depth":59,"text":2408},{"id":2451,"depth":59,"text":2452},{"id":2472,"depth":59,"text":2473},{"id":2516,"depth":59,"text":2517},{"id":2574,"depth":59,"text":2575},{"id":2607,"depth":52,"text":2759},".gitignore How to handle VSCode configuration",{"id":2652,"depth":52,"text":2653},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","2200-0500","2023-10-05","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-0500-模板扩展与常见问题",false,null,"en-US","en-us",{},{"title":5,"description":12},"\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-模板扩展与常见问题","aGK4Svs2KKr1elfo-0TYbc8Fu86o21ozFkrSw_XV0o0",[2780,2786,2791,2796,2801,2806,2811,2816,2821,2826,2831,2836,2841,2846,2851,2856,2861,2866,2871,2876,2881,2886,2891,2896,2901,2906,2911,2916,2921,2926,2931,2936,2941,2946,2951,2956,2961,2966,2971,2976,2981,2986,2991,2996,3001,3006,3011,3016,3021,3026,3031,3036,3041,3046,3051,3056,3061,3066,3071,3076,3081,3086,3091,3096,3101,3106,3111,3116,3121,3126,3131,3136,3141,3146,3151,3156,3161,3166,3171,3176,3177,3182],{"path":2781,"stem":2782,"title":2783,"date":2763,"chapterOrder":2784,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2787,"stem":2788,"title":2789,"date":2763,"chapterOrder":2790,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2792,"stem":2793,"title":2794,"date":2763,"chapterOrder":2795,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2797,"stem":2798,"title":2799,"date":2763,"chapterOrder":2800,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2802,"stem":2803,"title":2804,"date":2763,"chapterOrder":2805,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2807,"stem":2808,"title":2809,"date":2763,"chapterOrder":2810,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2812,"stem":2813,"title":2814,"date":2763,"chapterOrder":2815,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","array","0700",{"path":2817,"stem":2818,"title":2819,"date":2763,"chapterOrder":2820,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2822,"stem":2823,"title":2824,"date":2763,"chapterOrder":2825,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":2827,"stem":2828,"title":2829,"date":2763,"chapterOrder":2830,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2832,"stem":2833,"title":2834,"date":2763,"chapterOrder":2835,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2837,"stem":2838,"title":2839,"date":2763,"chapterOrder":2840,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":2842,"stem":2843,"title":2844,"date":2763,"chapterOrder":2845,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2847,"stem":2848,"title":2849,"date":2763,"chapterOrder":2850,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2852,"stem":2853,"title":2854,"date":2763,"chapterOrder":2855,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2857,"stem":2858,"title":2859,"date":2763,"chapterOrder":2860,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2862,"stem":2863,"title":2864,"date":2763,"chapterOrder":2865,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2867,"stem":2868,"title":2869,"date":2763,"chapterOrder":2870,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2872,"stem":2873,"title":2874,"date":2763,"chapterOrder":2875,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2877,"stem":2878,"title":2879,"date":2763,"chapterOrder":2880,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2882,"stem":2883,"title":2884,"date":2763,"chapterOrder":2885,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2887,"stem":2888,"title":2889,"date":2763,"chapterOrder":2890,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2892,"stem":2893,"title":2894,"date":2763,"chapterOrder":2895,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","template","1700",{"path":2897,"stem":2898,"title":2899,"date":2763,"chapterOrder":2900,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2902,"stem":2903,"title":2904,"date":2763,"chapterOrder":2905,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2907,"stem":2908,"title":2909,"date":2763,"chapterOrder":2910,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2912,"stem":2913,"title":2914,"date":2763,"chapterOrder":2915,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2917,"stem":2918,"title":2919,"date":2763,"chapterOrder":2920,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2922,"stem":2923,"title":2924,"date":2763,"chapterOrder":2925,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2927,"stem":2928,"title":2929,"date":2763,"chapterOrder":2930,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2932,"stem":2933,"title":2934,"date":2763,"chapterOrder":2935,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2937,"stem":2938,"title":2939,"date":2763,"chapterOrder":2940,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2942,"stem":2943,"title":2944,"date":2763,"chapterOrder":2945,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2947,"stem":2948,"title":2949,"date":2763,"chapterOrder":2950,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2952,"stem":2953,"title":2954,"date":2763,"chapterOrder":2955,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2957,"stem":2958,"title":2959,"date":2763,"chapterOrder":2960,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2962,"stem":2963,"title":2964,"date":2763,"chapterOrder":2965,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2967,"stem":2968,"title":2969,"date":2763,"chapterOrder":2970,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2972,"stem":2973,"title":2974,"date":2763,"chapterOrder":2975,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2977,"stem":2978,"title":2979,"date":2763,"chapterOrder":2980,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2982,"stem":2983,"title":2984,"date":2763,"chapterOrder":2985,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2987,"stem":2988,"title":2989,"date":2763,"chapterOrder":2990,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2992,"stem":2993,"title":2994,"date":2763,"chapterOrder":2995,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2997,"stem":2998,"title":2999,"date":2763,"chapterOrder":3000,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3002,"stem":3003,"title":3004,"date":2763,"chapterOrder":3005,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3007,"stem":3008,"title":3009,"date":2763,"chapterOrder":3010,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3012,"stem":3013,"title":3014,"date":2763,"chapterOrder":3015,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3017,"stem":3018,"title":3019,"date":2763,"chapterOrder":3020,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3022,"stem":3023,"title":3024,"date":2763,"chapterOrder":3025,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3027,"stem":3028,"title":3029,"date":2763,"chapterOrder":3030,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3032,"stem":3033,"title":3034,"date":2763,"chapterOrder":3035,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3037,"stem":3038,"title":3039,"date":2763,"chapterOrder":3040,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3042,"stem":3043,"title":3044,"date":2763,"chapterOrder":3045,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3047,"stem":3048,"title":3049,"date":2763,"chapterOrder":3050,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3052,"stem":3053,"title":3054,"date":2763,"chapterOrder":3055,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3057,"stem":3058,"title":3059,"date":2763,"chapterOrder":3060,"chapterDepth":52,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3062,"stem":3063,"title":3064,"date":2763,"chapterOrder":3065,"chapterDepth":52,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3067,"stem":3068,"title":3069,"date":2763,"chapterOrder":3070,"chapterDepth":52,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3072,"stem":3073,"title":3074,"date":2763,"chapterOrder":3075,"chapterDepth":52,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3077,"stem":3078,"title":3079,"date":2763,"chapterOrder":3080,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3082,"stem":3083,"title":3084,"date":2763,"chapterOrder":3085,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3087,"stem":3088,"title":3089,"date":2763,"chapterOrder":3090,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3092,"stem":3093,"title":3094,"date":2763,"chapterOrder":3095,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3097,"stem":3098,"title":3099,"date":2763,"chapterOrder":3100,"chapterDepth":52,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3102,"stem":3103,"title":3104,"date":2763,"chapterOrder":3105,"chapterDepth":52,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3107,"stem":3108,"title":3109,"date":2763,"chapterOrder":3110,"chapterDepth":52,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3112,"stem":3113,"title":3114,"date":2763,"chapterOrder":3115,"chapterDepth":52,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3117,"stem":3118,"title":3119,"date":2763,"chapterOrder":3120,"chapterDepth":52,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3122,"stem":3123,"title":3124,"date":2763,"chapterOrder":3125,"chapterDepth":52,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3127,"stem":3128,"title":3129,"date":2763,"chapterOrder":3130,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3132,"stem":3133,"title":3134,"date":2763,"chapterOrder":3135,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3137,"stem":3138,"title":3139,"date":2763,"chapterOrder":3140,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3142,"stem":3143,"title":3144,"date":2763,"chapterOrder":3145,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3147,"stem":3148,"title":3149,"date":2763,"chapterOrder":3150,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3152,"stem":3153,"title":3154,"date":2763,"chapterOrder":3155,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3157,"stem":3158,"title":3159,"date":2763,"chapterOrder":3160,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\u002Fen-us\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与构建安装","CMakePresets and Build Installation","2200-0100",{"path":3162,"stem":3163,"title":3164,"date":2763,"chapterOrder":3165,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3167,"stem":3168,"title":3169,"date":2763,"chapterOrder":3170,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":3172,"stem":3173,"title":3174,"date":2763,"chapterOrder":3175,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2761,"stem":2777,"title":5,"date":2763,"chapterOrder":2762,"chapterDepth":35,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},{"path":3178,"stem":3179,"title":3180,"date":2763,"chapterOrder":3181,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":2770},"\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":2766,"stem":3183,"title":3184,"date":2763,"chapterOrder":2771,"chapterDepth":2785,"docKey":2765,"docRoot":2766,"docTitle":2767,"isWikiDoc":240,"isWikiIndex":240},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":3186},[3187,3188,3191,3194,3197],{"path":2761,"localeSlug":2773,"i18nKey":2769},{"path":3189,"localeSlug":3190,"i18nKey":2769},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","zh-hant",{"path":3192,"localeSlug":3193,"i18nKey":2769},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","zh-hk",{"path":3195,"localeSlug":3196,"i18nKey":2769},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","zh-tw",{"path":3198,"localeSlug":3199,"i18nKey":2769},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","zh-cn",[2761,2776,3189,2776,3192,2776,3195,2776,3198,2776],1784646872679]