[{"data":1,"prerenderedAt":1903},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban":1484,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban":1887,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban":1902},{"id":4,"title":5,"body":6,"canonicalPath":1464,"chapterDepth":1465,"chapterOrder":1466,"date":1467,"description":12,"docI18nKey":1468,"docKey":1469,"docRoot":1470,"docTitle":1471,"extension":1472,"i18nKey":1473,"isBlogPost":1474,"isWikiDoc":1475,"isWikiIndex":1474,"layout":1476,"legacyPath":1476,"locale":1477,"localeSlug":1478,"meta":1479,"navigation":1475,"path":1464,"seo":1480,"sourcePath":1481,"sourceStem":1473,"stem":1482,"wikiDepth":200,"__hash__":1483},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板.md","CMake Project Template",{"type":7,"value":8,"toc":1439},"minimark",[9,13,16,56,61,64,74,77,179,183,186,189,242,245,283,286,343,346,355,361,365,406,426,429,432,445,453,463,465,480,494,496,509,516,519,525,528,534,537,543,558,562,565,597,600,678,681,692,732,741,744,897,961,968,1062,1069,1088,1095,1212,1219,1250,1261,1265,1268,1271,1330,1333,1339,1345,1348,1372,1379,1383,1412,1415,1435],[10,11,12],"p",{},"This chapter uses a Linux-only CMake project template to explain how to organize, build, install, and integrate third-party libraries in a C++ project.",[10,14,15],{},"The goal of this template is not to cover every aspect of CMake syntax all at once, but rather to focus on a real, runnable project to understand the most commonly used set of practices in modern CMake.",[17,18,19,28,34,40,46,49],"ol",{},[20,21,22,23,27],"li",{},"The top-level ",[24,25,26],"code",{},"CMakeLists.txt"," only handles overall project control.",[20,29,30,33],{},[24,31,32],{},"CMakePresets.json"," Lock in the Debug \u002F Release build configurations.",[20,35,36,39],{},[24,37,38],{},"cmake\u002FProjectOptions.cmake"," Save common project compilation options.",[20,41,42,45],{},[24,43,44],{},"src\u002FCMakeLists.txt"," manages the main program.",[20,47,48],{},"Each library directory manages its own source code, headers, installation rules, and third-party dependencies.",[20,50,51,52,55],{},"Third-party libraries follow a \"whoever uses them, whoever ",[24,53,54],{},"find_package","\" approach.",[57,58,60],"h2",{"id":59},"template-directory-structure","Template Directory Structure",[10,62,63],{},"The core directories of the template are as follows:",[65,66,72],"pre",{"className":67,"code":69,"language":70,"meta":71},[68],"language-text",".\n├── CMakeLists.txt\n├── CMakePresets.json\n├── cmake\u002F\n│   └── ProjectOptions.cmake\n└── src\u002F\n    ├── CMakeLists.txt\n    ├── main.cpp\n    ├── lib1\u002F\n    │   ├── CMakeLists.txt\n    │   ├── inc\u002F\n    │   │   └── lib1\u002F\n    │   │       └── eigen3_test.hpp\n    │   └── src\u002F\n    │       └── eigen3_test.cpp\n    └── lib2\u002F\n        ├── CMakeLists.txt\n        ├── inc\u002F\n        │   └── lib2\u002F\n        │       └── eigen3_test.hpp\n        └── src\u002F\n            └── eigen3_test.cpp\n","text","",[24,73,69],{"__ignoreMap":71},[10,75,76],{},"Among them:",[78,79,80,94],"table",{},[81,82,83],"thead",{},[84,85,86,91],"tr",{},[87,88,90],"th",{"align":89},"left","file",[87,92,93],{"align":89},"Responsibilities",[95,96,97,111,127,136,152,166],"tbody",{},[84,98,99,104],{},[100,101,102],"td",{"align":89},[24,103,26],{},[100,105,106,107,110],{"align":89},"Top-level entry point, declares the project, loads common configuration, and enters ",[24,108,109],{},"src",".",[84,112,113,117],{},[100,114,115],{"align":89},[24,116,32],{},[100,118,119,120,123,124,110],{"align":89},"Save build presets, such as ",[24,121,122],{},"linux-debug"," and ",[24,125,126],{},"linux-release",[84,128,129,133],{},[100,130,131],{"align":89},[24,132,38],{},[100,134,135],{"align":89},"Save C\u002FC++ standards, common warnings, and other configurations.",[84,137,138,142],{},[100,139,140],{"align":89},[24,141,44],{},[100,143,144,145,148,149],{"align":89},"Create the final executable file and link ",[24,146,147],{},"lib1",", ",[24,150,151],{},"lib2",[84,153,154,159],{},[100,155,156],{"align":89},[24,157,158],{},"src\u002Flib1\u002FCMakeLists.txt",[100,160,161,162,165],{"align":89},"Create ",[24,163,164],{},"lib1_src_lib"," to manage lib1's own includes, dependencies, and installation.",[84,167,168,173],{},[100,169,170],{"align":89},[24,171,172],{},"src\u002Flib2\u002FCMakeLists.txt",[100,174,161,175,178],{"align":89},[24,176,177],{},"lib2_src_lib"," to manage lib2's own includes, dependencies, and installations.",[57,180,182],{"id":181},"build-command","Build Command",[10,184,185],{},"This template uses CMakePresets + Ninja.",[10,187,188],{},"Debug Build:",[65,190,194],{"className":191,"code":192,"language":193,"meta":71,"style":71},"language-bash shiki shiki-themes github-light github-dark","cmake --preset linux-debug\ncmake --build --preset linux-debug\ncmake --install build\u002Flinux-debug\n.\u002Finstall\u002Flinux-debug\u002Fbin\u002Fcmake_template\n","bash",[24,195,196,213,225,236],{"__ignoreMap":71},[197,198,201,205,209],"span",{"class":199,"line":200},"line",1,[197,202,204],{"class":203},"sScJk","cmake",[197,206,208],{"class":207},"sj4cs"," --preset",[197,210,212],{"class":211},"sZZnC"," linux-debug\n",[197,214,216,218,221,223],{"class":199,"line":215},2,[197,217,204],{"class":203},[197,219,220],{"class":207}," --build",[197,222,208],{"class":207},[197,224,212],{"class":211},[197,226,228,230,233],{"class":199,"line":227},3,[197,229,204],{"class":203},[197,231,232],{"class":207}," --install",[197,234,235],{"class":211}," build\u002Flinux-debug\n",[197,237,239],{"class":199,"line":238},4,[197,240,241],{"class":203},".\u002Finstall\u002Flinux-debug\u002Fbin\u002Fcmake_template\n",[10,243,244],{},"Release build:",[65,246,248],{"className":191,"code":247,"language":193,"meta":71,"style":71},"cmake --preset linux-release\ncmake --build --preset linux-release\ncmake --install build\u002Flinux-release\n.\u002Finstall\u002Flinux-release\u002Fbin\u002Fcmake_template\n",[24,249,250,259,269,278],{"__ignoreMap":71},[197,251,252,254,256],{"class":199,"line":200},[197,253,204],{"class":203},[197,255,208],{"class":207},[197,257,258],{"class":211}," linux-release\n",[197,260,261,263,265,267],{"class":199,"line":215},[197,262,204],{"class":203},[197,264,220],{"class":207},[197,266,208],{"class":207},[197,268,258],{"class":211},[197,270,271,273,275],{"class":199,"line":227},[197,272,204],{"class":203},[197,274,232],{"class":207},[197,276,277],{"class":211}," build\u002Flinux-release\n",[197,279,280],{"class":199,"line":238},[197,281,282],{"class":203},".\u002Finstall\u002Flinux-release\u002Fbin\u002Fcmake_template\n",[10,284,285],{},"These commands do four things respectively.",[78,287,288,298],{},[81,289,290],{},[84,291,292,295],{},[87,293,294],{"align":89},"command",[87,296,297],{"align":89},"effect",[95,299,300,310,320,333],{},[84,301,302,307],{},[100,303,304],{"align":89},[24,305,306],{},"cmake --preset linux-debug",[100,308,309],{"align":89},"Configure the project and generate Ninja build files.",[84,311,312,317],{},[100,313,314],{"align":89},[24,315,316],{},"cmake --build --preset linux-debug",[100,318,319],{"align":89},"Compile source code and link objects",[84,321,322,327],{},[100,323,324],{"align":89},[24,325,326],{},"cmake --install build\u002Flinux-debug",[100,328,329,330,110],{"align":89},"Install the executables, libraries, and header files to ",[24,331,332],{},"install\u002Flinux-debug",[84,334,335,340],{},[100,336,337],{"align":89},[24,338,339],{},".\u002Finstall\u002Flinux-debug\u002Fbin\u002Fcmake_template",[100,341,342],{"align":89},"Run the program after installation",[10,344,345],{},"During routine development, installation isn't necessary every time; after compiling, you can directly run the program from the build directory.",[65,347,349],{"className":191,"code":348,"language":193,"meta":71,"style":71},".\u002Fbuild\u002Flinux-debug\u002Fsrc\u002Fcmake_template\n",[24,350,351],{"__ignoreMap":71},[197,352,353],{"class":199,"line":200},[197,354,348],{"class":203},[10,356,357,360],{},[24,358,359],{},"install"," is more suitable for verifying \"whether the post-installation directory structure and dynamic library paths are correct.\"",[57,362,364],{"id":363},"configure-build-and-install-are-three-distinct-stages-commonly-used-in-compiling-and-setting-up-software-from-source-code-heres-what-each-step-does","Configure, build, and install are three distinct stages commonly used in compiling and setting up software from source code. Here’s what each step does:",[366,367,368,383,391],"ul",{},[20,369,370,374,375,378,379,382],{},[371,372,373],"strong",{},"Configure",":",[376,377],"br",{},"\nThis step prepares the build environment. It checks system dependencies, verifies required libraries, and generates a customized build configuration (often via a ",[24,380,381],{},"Makefile"," or similar). It may also allow enabling\u002Fdisabling specific features via options.",[20,384,385,374,388,390],{},[371,386,387],{},"Build",[376,389],{},"\nThis stage performs the actual compilation or assembly of the source code, producing executable binaries or libraries based on the configuration set in the previous step.",[20,392,393,374,396,398,399,148,402,405],{},[371,394,395],{},"Install",[376,397],{},"\nAfter a successful build, this step copies the compiled files (executables, libraries, configuration files, etc.) to standard system directories (e.g., ",[24,400,401],{},"\u002Fusr\u002Flocal\u002Fbin",[24,403,404],{},"\u002Fusr\u002Flib","), making the software ready for use.",[10,407,408,409,411,414,415,417,420,421,423,425],{},"In summary:",[376,410],{},[24,412,413],{},"configure"," → prepares and adapts the build to your system;",[376,416],{},[24,418,419],{},"build"," → compiles the code;",[376,422],{},[24,424,359],{}," → places the built software in the correct system locations.",[10,427,428],{},"A CMake project typically involves three stages:",[430,431,413],"h3",{"id":413},[65,433,435],{"className":191,"code":434,"language":193,"meta":71,"style":71},"cmake --preset linux-debug\n",[24,436,437],{"__ignoreMap":71},[197,438,439,441,443],{"class":199,"line":200},[197,440,204],{"class":203},[197,442,208],{"class":207},[197,444,212],{"class":211},[10,446,447,448,123,450,452],{},"At this stage, all ",[24,449,26],{},[24,451,32],{}," are read, compilers, third-party libraries, and variables are checked, and build system files are generated.",[10,454,455,456,459,460,110],{},"When using Ninja, files are generated under ",[24,457,458],{},"build\u002Flinux-debug"," at ",[24,461,462],{},"build.ninja",[430,464,419],{"id":419},[65,466,468],{"className":191,"code":467,"language":193,"meta":71,"style":71},"cmake --build --preset linux-debug\n",[24,469,470],{"__ignoreMap":71},[197,471,472,474,476,478],{"class":199,"line":200},[197,473,204],{"class":203},[197,475,220],{"class":207},[197,477,208],{"class":207},[197,479,212],{"class":211},[10,481,482,483,486,487,148,490,493],{},"At this stage, call Ninja to compile the ",[24,484,485],{},".cpp"," files, generating build artifacts such as ",[24,488,489],{},".o",[24,491,492],{},".so",", and executables.",[430,495,359],{"id":359},[65,497,499],{"className":191,"code":498,"language":193,"meta":71,"style":71},"cmake --install build\u002Flinux-debug\n",[24,500,501],{"__ignoreMap":71},[197,502,503,505,507],{"class":199,"line":200},[197,504,204],{"class":203},[197,506,232],{"class":207},[197,508,235],{"class":211},[10,510,511,512,515],{},"At this stage, follow the ",[24,513,514],{},"install(...)"," rule to copy the build artifacts to the installation directory.",[10,517,518],{},"In this template, Debug is installed to:",[65,520,523],{"className":521,"code":522,"language":70,"meta":71},[68],"install\u002Flinux-debug\u002F\n",[24,524,522],{"__ignoreMap":71},[10,526,527],{},"Release installed to:",[65,529,532],{"className":530,"code":531,"language":70,"meta":71},[68],"install\u002Flinux-release\u002F\n",[24,533,531],{"__ignoreMap":71},[10,535,536],{},"The typical structure after installation is as follows:",[65,538,541],{"className":539,"code":540,"language":70,"meta":71},[68],"install\u002Flinux-debug\u002F\n├── bin\u002F\n│   └── cmake_template\n├── include\u002F\n│   ├── lib1\u002F\n│   │   └── eigen3_test.hpp\n│   └── lib2\u002F\n│       └── eigen3_test.hpp\n└── lib64\u002F\n    ├── liblib1_src_lib.so\n    └── liblib2_src_lib.so\n",[24,542,540],{"__ignoreMap":71},[10,544,545,546,549,550,553,554,557],{},"Some Linux distributions use ",[24,547,548],{},"lib",", while others use ",[24,551,552],{},"lib64",". This template uses ",[24,555,556],{},"GNUInstallDirs"," to allow CMake to automatically select the appropriate directory.",[57,559,561],{"id":560},"why-not-handwrite-buildinstalllog-scripts","Why not handwrite build\u002Finstall\u002Flog scripts",[10,563,564],{},"This practice was common in older templates:",[17,566,567,573,582,588,594],{},[20,568,569,570,572],{},"Create your own ",[24,571,419],{}," directory.",[20,574,575,576,579,580,110],{},"Run ",[24,577,578],{},"cmake .."," in ",[24,581,419],{},[20,583,584,585,110],{},"Handwritten ",[24,586,587],{},"make install",[20,589,590,591,110],{},"Hand-written script sets up ",[24,592,593],{},"LD_LIBRARY_PATH",[20,595,596],{},"Maintain the log directory yourself.",[10,598,599],{},"After switching the template to use CMakePresets, this content is no longer needed:",[78,601,602,612],{},[81,603,604],{},[84,605,606,609],{},[87,607,608],{"align":89},"previous method",[87,610,611],{"align":89},"New Approach",[95,613,614,630,642,652,660,671],{},[84,615,616,622],{},[100,617,618,619],{"align":89},"Manual ",[24,620,621],{},"cd build",[100,623,624,626,627],{"align":89},[24,625,32],{}," Unified Settings ",[24,628,629],{},"binaryDir",[84,631,632,635],{},[100,633,634],{"align":89},"Manually set Debug \u002F Release",[100,636,637,638,641],{"align":89},"set ",[24,639,640],{},"CMAKE_BUILD_TYPE"," in the preset",[84,643,644,647],{},[100,645,646],{"align":89},"Manually Set Installation Path",[100,648,637,649,641],{"align":89},[24,650,651],{},"CMAKE_INSTALL_PREFIX",[84,653,654,657],{},[100,655,656],{"align":89},"Manually invoke Makefile",[100,658,659],{"align":89},"preset specifies Ninja",[84,661,662,665],{},[100,663,664],{"align":89},"Manual setting of dynamic library paths",[100,666,667,668],{"align":89},"Install Target Settings ",[24,669,670],{},"INSTALL_RPATH",[84,672,673,676],{},[100,674,675],{"align":89},"Hand-writing VSCode Tasks",[100,677],{"align":89},[10,679,680],{},"To manually create custom tasks in Visual Studio Code (VSCode), follow these steps:",[430,682,684,685],{"id":683},"_1-create-the-tasksjson-file","1. ",[371,686,687,688,691],{},"Create the ",[24,689,690],{},"tasks.json"," File",[366,693,694,697,711,722],{},[20,695,696],{},"Open your project folder in VSCode.",[20,698,699,700,703,704,707,708,110],{},"Press ",[371,701,702],{},"Ctrl+Shift+P"," (or ",[371,705,706],{},"Cmd+Shift+P"," on macOS) and type ",[371,709,710],{},"“Tasks: Configure Task”",[20,712,713,714,717,718,721],{},"Select ",[371,715,716],{},"“Create tasks.json file from template”"," and choose ",[371,719,720],{},"“Others”"," (or start with an empty template).",[20,723,724,725,727,728,731],{},"This will generate a ",[24,726,690],{}," file inside a ",[24,729,730],{},".vscode"," folder in your project root.",[430,733,735,736],{"id":734},"_2-basic-structure-of-tasksjson","2. ",[371,737,738,739],{},"Basic Structure of ",[24,740,690],{},[10,742,743],{},"A minimal task configuration might look like this:",[65,745,749],{"className":746,"code":747,"language":748,"meta":71,"style":71},"language-json shiki shiki-themes github-light github-dark","{  \n  \"version\": \"2.0.0\",  \n  \"tasks\": [  \n    {  \n      \"label\": \"Build Project\",  \n      \"type\": \"shell\",  \n      \"command\": \"make\",  \n      \"args\": [\"build\"],  \n      \"group\": {  \n        \"kind\": \"build\",  \n        \"isDefault\": true  \n      }  \n    }  \n  ]  \n}  \n","json",[24,750,751,757,771,779,784,797,810,823,838,847,859,873,879,885,891],{"__ignoreMap":71},[197,752,753],{"class":199,"line":200},[197,754,756],{"class":755},"sVt8B","{  \n",[197,758,759,762,765,768],{"class":199,"line":215},[197,760,761],{"class":207},"  \"version\"",[197,763,764],{"class":755},": ",[197,766,767],{"class":211},"\"2.0.0\"",[197,769,770],{"class":755},",  \n",[197,772,773,776],{"class":199,"line":227},[197,774,775],{"class":207},"  \"tasks\"",[197,777,778],{"class":755},": [  \n",[197,780,781],{"class":199,"line":238},[197,782,783],{"class":755},"    {  \n",[197,785,787,790,792,795],{"class":199,"line":786},5,[197,788,789],{"class":207},"      \"label\"",[197,791,764],{"class":755},[197,793,794],{"class":211},"\"Build Project\"",[197,796,770],{"class":755},[197,798,800,803,805,808],{"class":199,"line":799},6,[197,801,802],{"class":207},"      \"type\"",[197,804,764],{"class":755},[197,806,807],{"class":211},"\"shell\"",[197,809,770],{"class":755},[197,811,813,816,818,821],{"class":199,"line":812},7,[197,814,815],{"class":207},"      \"command\"",[197,817,764],{"class":755},[197,819,820],{"class":211},"\"make\"",[197,822,770],{"class":755},[197,824,826,829,832,835],{"class":199,"line":825},8,[197,827,828],{"class":207},"      \"args\"",[197,830,831],{"class":755},": [",[197,833,834],{"class":211},"\"build\"",[197,836,837],{"class":755},"],  \n",[197,839,841,844],{"class":199,"line":840},9,[197,842,843],{"class":207},"      \"group\"",[197,845,846],{"class":755},": {  \n",[197,848,850,853,855,857],{"class":199,"line":849},10,[197,851,852],{"class":207},"        \"kind\"",[197,854,764],{"class":755},[197,856,834],{"class":211},[197,858,770],{"class":755},[197,860,862,865,867,870],{"class":199,"line":861},11,[197,863,864],{"class":207},"        \"isDefault\"",[197,866,764],{"class":755},[197,868,869],{"class":207},"true",[197,871,872],{"class":755},"  \n",[197,874,876],{"class":199,"line":875},12,[197,877,878],{"class":755},"      }  \n",[197,880,882],{"class":199,"line":881},13,[197,883,884],{"class":755},"    }  \n",[197,886,888],{"class":199,"line":887},14,[197,889,890],{"class":755},"  ]  \n",[197,892,894],{"class":199,"line":893},15,[197,895,896],{"class":755},"}\n",[366,898,899,907,922,939,947],{},[20,900,901,906],{},[371,902,903],{},[24,904,905],{},"label",": A descriptive name for the task (visible in the task menu).",[20,908,909,914,915,917,918,921],{},[371,910,911],{},[24,912,913],{},"type",": Usually ",[24,916,807],{}," (for command-line tasks) or ",[24,919,920],{},"\"process\""," (for direct executables).",[20,923,924,928,929,148,932,148,935,938],{},[371,925,926],{},[24,927,294],{},": The command to run (e.g., ",[24,930,931],{},"make",[24,933,934],{},"gcc",[24,936,937],{},"python",").",[20,940,941,946],{},[371,942,943],{},[24,944,945],{},"args",": Arguments passed to the command.",[20,948,949,954,955,148,957,960],{},[371,950,951],{},[24,952,953],{},"group",": Specifies the task type (",[24,956,834],{},[24,958,959],{},"\"test\"",", etc.) and whether it’s the default.",[430,962,964,965],{"id":963},"_3-advanced-configuration","3. ",[371,966,967],{},"Advanced Configuration",[366,969,970,1002,1023,1056],{},[20,971,972,975,976,979,980],{},[371,973,974],{},"Dependencies",": Use ",[24,977,978],{},"\"dependsOn\""," to run multiple tasks in sequence.\n",[65,981,983],{"className":746,"code":982,"language":748,"meta":71,"style":71},"\"dependsOn\": [\"Task1\", \"Task2\"]  \n",[24,984,985],{"__ignoreMap":71},[197,986,987,989,991,994,996,999],{"class":199,"line":200},[197,988,978],{"class":211},[197,990,831],{"class":755},[197,992,993],{"class":211},"\"Task1\"",[197,995,148],{"class":755},[197,997,998],{"class":211},"\"Task2\"",[197,1000,1001],{"class":755},"]\n",[20,1003,1004,1007,1008],{},[371,1005,1006],{},"Problem Matchers",": Map compiler output to VSCode’s Problems panel.\n",[65,1009,1011],{"className":746,"code":1010,"language":748,"meta":71,"style":71},"\"problemMatcher\": \"$gcc\"  \n",[24,1012,1013],{"__ignoreMap":71},[197,1014,1015,1018,1020],{"class":199,"line":200},[197,1016,1017],{"class":211},"\"problemMatcher\"",[197,1019,764],{"class":755},[197,1021,1022],{"class":211},"\"$gcc\"\n",[20,1024,1025,1028,1029,1032,1033],{},[371,1026,1027],{},"Environment Variables",": Set via ",[24,1030,1031],{},"\"env\"",".\n",[65,1034,1036],{"className":746,"code":1035,"language":748,"meta":71,"style":71},"\"env\": { \"PYTHONPATH\": \"${workspaceFolder}\u002Fsrc\" }  \n",[24,1037,1038],{"__ignoreMap":71},[197,1039,1040,1042,1045,1048,1050,1053],{"class":199,"line":200},[197,1041,1031],{"class":211},[197,1043,1044],{"class":755},": { ",[197,1046,1047],{"class":207},"\"PYTHONPATH\"",[197,1049,764],{"class":755},[197,1051,1052],{"class":211},"\"${workspaceFolder}\u002Fsrc\"",[197,1054,1055],{"class":755}," }\n",[20,1057,1058,1061],{},[371,1059,1060],{},"Input Variables",": Prompt for user input dynamically.",[430,1063,1065,1066],{"id":1064},"_4-run-tasks","4. ",[371,1067,1068],{},"Run Tasks",[366,1070,1071,1079,1082],{},[20,1072,699,1073,1075,1076,110],{},[371,1074,702],{}," and select ",[371,1077,1078],{},"“Tasks: Run Task”",[20,1080,1081],{},"Choose your task from the list.",[20,1083,1084,1085,110],{},"To run the default build task, use the shortcut ",[371,1086,1087],{},"Ctrl+Shift+B",[430,1089,1091,1092],{"id":1090},"_5-examples-for-common-scenarios","5. ",[371,1093,1094],{},"Examples for Common Scenarios",[366,1096,1097,1149,1180],{},[20,1098,1099,1102,1103],{},[371,1100,1101],{},"Compile C++ with g++",":\n",[65,1104,1106],{"className":746,"code":1105,"language":748,"meta":71,"style":71},"{ \"command\": \"g++\", \"args\": [\"-g\", \"${file}\", \"-o\", \"${fileDirname}\u002F${fileBasenameNoExtension}\"] }  \n",[24,1107,1108],{"__ignoreMap":71},[197,1109,1110,1113,1116,1118,1121,1123,1126,1128,1131,1133,1136,1138,1141,1143,1146],{"class":199,"line":200},[197,1111,1112],{"class":755},"{ ",[197,1114,1115],{"class":207},"\"command\"",[197,1117,764],{"class":755},[197,1119,1120],{"class":211},"\"g++\"",[197,1122,148],{"class":755},[197,1124,1125],{"class":207},"\"args\"",[197,1127,831],{"class":755},[197,1129,1130],{"class":211},"\"-g\"",[197,1132,148],{"class":755},[197,1134,1135],{"class":211},"\"${file}\"",[197,1137,148],{"class":755},[197,1139,1140],{"class":211},"\"-o\"",[197,1142,148],{"class":755},[197,1144,1145],{"class":211},"\"${fileDirname}\u002F${fileBasenameNoExtension}\"",[197,1147,1148],{"class":755},"] }\n",[20,1150,1151,1102,1154],{},[371,1152,1153],{},"Run a Python script",[65,1155,1157],{"className":746,"code":1156,"language":748,"meta":71,"style":71},"{ \"command\": \"python\", \"args\": [\"${file}\"] }  \n",[24,1158,1159],{"__ignoreMap":71},[197,1160,1161,1163,1165,1167,1170,1172,1174,1176,1178],{"class":199,"line":200},[197,1162,1112],{"class":755},[197,1164,1115],{"class":207},[197,1166,764],{"class":755},[197,1168,1169],{"class":211},"\"python\"",[197,1171,148],{"class":755},[197,1173,1125],{"class":207},[197,1175,831],{"class":755},[197,1177,1135],{"class":211},[197,1179,1148],{"class":755},[20,1181,1182,1102,1185],{},[371,1183,1184],{},"Execute a shell script",[65,1186,1188],{"className":746,"code":1187,"language":748,"meta":71,"style":71},"{ \"command\": \".\u002Fscripts\u002Fbuild.sh\", \"type\": \"shell\" }  \n",[24,1189,1190],{"__ignoreMap":71},[197,1191,1192,1194,1196,1198,1201,1203,1206,1208,1210],{"class":199,"line":200},[197,1193,1112],{"class":755},[197,1195,1115],{"class":207},[197,1197,764],{"class":755},[197,1199,1200],{"class":211},"\".\u002Fscripts\u002Fbuild.sh\"",[197,1202,148],{"class":755},[197,1204,1205],{"class":207},"\"type\"",[197,1207,764],{"class":755},[197,1209,807],{"class":211},[197,1211,1055],{"class":755},[430,1213,1215,1216],{"id":1214},"_6-tips","6. ",[371,1217,1218],{},"Tips",[366,1220,1221,1236,1243],{},[20,1222,1223,1224,1227,1228,1231,1232,1235],{},"Use ",[371,1225,1226],{},"variables"," like ",[24,1229,1230],{},"${workspaceFolder}"," or ",[24,1233,1234],{},"${file}"," for dynamic paths.",[20,1237,1238,1239,1242],{},"Configure tasks per workspace (",[24,1240,1241],{},".vscode\u002Ftasks.json",") or globally (user settings).",[20,1244,1245,1246,1249],{},"For complex builds, consider using ",[371,1247,1248],{},"compound tasks"," or integrating with build tools like CMake or Maven.",[10,1251,1252,1253,1260],{},"For full documentation, refer to VSCode’s official guide: ",[1254,1255,1259],"a",{"href":1256,"rel":1257},"https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Feditor\u002Ftasks",[1258],"nofollow","Tasks in Visual Studio Code",".|VSCode CMake Tools directly reads from presets.|\n|Handwriting complex debugging scripts|Directly run or debug the current CMake target using VSCode CMake Tools.|",[57,1262,1264],{"id":1263},"running-and-debugging-with-vscode-cmake-tools","Running and Debugging with VSCode CMake Tools",[10,1266,1267],{},"This template doesn't require extra VSCode debug configuration. After installing CMake Tools, VSCode can directly recognize executable targets in CMake and run or debug the current target.",[10,1269,1270],{},"Graphical processes can be understood as the button-based version of command-line processes:",[78,1272,1273,1283],{},[81,1274,1275],{},[84,1276,1277,1280],{},[87,1278,1279],{"align":89},"command line",[87,1281,1282],{"align":89},"VSCode CMake Tools",[95,1284,1285,1298,1307,1320],{},[84,1286,1287,1291],{},[100,1288,1289],{"align":89},[24,1290,306],{},[100,1292,1293,1294,1297],{"align":89},"After selecting the ",[24,1295,1296],{},"Linux Debug"," preset, configure",[84,1299,1300,1304],{},[100,1301,1302],{"align":89},[24,1303,316],{},[100,1305,1306],{"align":89},"Click Build",[84,1308,1309,1314],{},[100,1310,1311],{"align":89},[24,1312,1313],{},".\u002Fbuild\u002Flinux-debug\u002Fsrc\u002Fcmake_template",[100,1315,1293,1316,1319],{"align":89},[24,1317,1318],{},"cmake_template"," target, click the run button.",[84,1321,1322,1325],{},[100,1323,1324],{"align":89},"Debugging build artifacts with GDB",[100,1326,1293,1327,1329],{"align":89},[24,1328,1318],{}," target, click the Debug button.",[10,1331,1332],{},"CMake Tools typically runs or debugs the executable files located in the build directory:",[65,1334,1337],{"className":1335,"code":1336,"language":70,"meta":71},[68],"build\u002Flinux-debug\u002Fsrc\u002Fcmake_template\n",[24,1338,1336],{"__ignoreMap":71},[10,1340,1341,1342,1344],{},"Therefore, daily development does not require installation each time. ",[24,1343,359],{}," is primarily used for verifying the installation layout, header file installation, dynamic library RPATH, and similar aspects.",[10,1346,1347],{},"Recommended workflow:",[17,1349,1350,1353,1358,1361,1364,1369],{},[20,1351,1352],{},"Install the VSCode CMake Tools extension and Microsoft C\u002FC++ extension.",[20,1354,713,1355,1357],{},[24,1356,122],{}," configure preset.",[20,1359,1360],{},"Configure。",[20,1362,1363],{},"Build。",[20,1365,713,1366,1368],{},[24,1367,1318],{}," as the run\u002Fdebug target.",[20,1370,1371],{},"Click the Run or Debug button provided by CMake Tools.",[10,1373,1374,1375,110],{},"For more detailed graphical interface operation steps, see ",[1254,1376,1378],{"href":1377},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","CMakePresets and Build and Installation",[57,1380,1382],{"id":1381},"recommended-reading-order-for-this-chapter","Recommended reading order for this chapter",[17,1384,1385,1391,1398,1405],{},[20,1386,1387,1390],{},[1254,1388,1389],{"href":1377},"CMakePresets and Build Installation",": First, understand the preset workflow.",[20,1392,1393,1397],{},[1254,1394,1396],{"href":1395},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","Top-level CMake and Public Compilation Options",": Understanding the top-level entry point and public configuration.",[20,1399,1400,1404],{},[1254,1401,1403],{"href":1402},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","CMake In-Depth Guide for src and lib Modules",": Understanding Executables, Libraries, Include, and Install.",[20,1406,1407,1411],{},[1254,1408,1410],{"href":1409},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","Third-party library dependency writing",": Learn how to introduce libraries such as Eigen, OpenCV, Boost, and PCL.",[10,1413,1414],{},"After completing this tutorial, you should be able to:",[17,1416,1417,1420,1423,1426,1429,1432],{},[20,1418,1419],{},"Create a new C++ project and build it using presets.",[20,1421,1422],{},"Add new library directory.",[20,1424,1425],{},"Add new executable files.",[20,1427,1428],{},"Correctly manage the header file include paths.",[20,1430,1431],{},"Import third-party libraries within the module.",[20,1433,1434],{},"Once installed, run the program directly without needing to rely on hand-written scripts.",[1436,1437,1438],"style",{},"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 .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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":71,"searchDepth":215,"depth":215,"links":1440},[1441,1442,1443,1448,1462,1463],{"id":59,"depth":215,"text":60},{"id":181,"depth":215,"text":182},{"id":363,"depth":215,"text":364,"children":1444},[1445,1446,1447],{"id":413,"depth":227,"text":413},{"id":419,"depth":227,"text":419},{"id":359,"depth":227,"text":359},{"id":560,"depth":215,"text":561,"children":1449},[1450,1452,1454,1456,1458,1460],{"id":683,"depth":227,"text":1451},"1. Create the tasks.json File",{"id":734,"depth":227,"text":1453},"2. Basic Structure of tasks.json",{"id":963,"depth":227,"text":1455},"3. Advanced Configuration",{"id":1064,"depth":227,"text":1457},"4. Run Tasks",{"id":1090,"depth":227,"text":1459},"5. Examples for Common Scenarios",{"id":1214,"depth":227,"text":1461},"6. Tips",{"id":1263,"depth":215,"text":1264},{"id":1381,"depth":215,"text":1382},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban",0,"2200","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-CMake工程模板",false,true,null,"en-US","en-us",{},{"title":5,"description":12},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","O_FWEOVaYHR6iFnZxyw6a04h1gju5rjB9KqnNkliGxo",[1485,1490,1495,1500,1505,1510,1515,1520,1525,1530,1535,1540,1545,1550,1555,1560,1565,1570,1575,1580,1585,1590,1595,1600,1605,1610,1615,1620,1625,1630,1635,1640,1645,1650,1655,1660,1665,1670,1675,1680,1685,1690,1695,1700,1705,1710,1715,1720,1725,1730,1735,1740,1745,1750,1755,1760,1765,1770,1775,1780,1785,1790,1795,1800,1805,1810,1815,1820,1825,1830,1835,1840,1845,1850,1855,1860,1864,1868,1873,1878,1883,1884],{"path":1486,"stem":1487,"title":1488,"date":1467,"chapterOrder":1489,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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",{"path":1491,"stem":1492,"title":1493,"date":1467,"chapterOrder":1494,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1496,"stem":1497,"title":1498,"date":1467,"chapterOrder":1499,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1501,"stem":1502,"title":1503,"date":1467,"chapterOrder":1504,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1506,"stem":1507,"title":1508,"date":1467,"chapterOrder":1509,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1511,"stem":1512,"title":1513,"date":1467,"chapterOrder":1514,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1516,"stem":1517,"title":1518,"date":1467,"chapterOrder":1519,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","array","0700",{"path":1521,"stem":1522,"title":1523,"date":1467,"chapterOrder":1524,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1526,"stem":1527,"title":1528,"date":1467,"chapterOrder":1529,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":1531,"stem":1532,"title":1533,"date":1467,"chapterOrder":1534,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1536,"stem":1537,"title":1538,"date":1467,"chapterOrder":1539,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1541,"stem":1542,"title":1543,"date":1467,"chapterOrder":1544,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":1546,"stem":1547,"title":1548,"date":1467,"chapterOrder":1549,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1551,"stem":1552,"title":1553,"date":1467,"chapterOrder":1554,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1556,"stem":1557,"title":1558,"date":1467,"chapterOrder":1559,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1561,"stem":1562,"title":1563,"date":1467,"chapterOrder":1564,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1566,"stem":1567,"title":1568,"date":1467,"chapterOrder":1569,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1571,"stem":1572,"title":1573,"date":1467,"chapterOrder":1574,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1576,"stem":1577,"title":1578,"date":1467,"chapterOrder":1579,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1581,"stem":1582,"title":1583,"date":1467,"chapterOrder":1584,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1586,"stem":1587,"title":1588,"date":1467,"chapterOrder":1589,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1591,"stem":1592,"title":1593,"date":1467,"chapterOrder":1594,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1596,"stem":1597,"title":1598,"date":1467,"chapterOrder":1599,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","template","1700",{"path":1601,"stem":1602,"title":1603,"date":1467,"chapterOrder":1604,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1606,"stem":1607,"title":1608,"date":1467,"chapterOrder":1609,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1611,"stem":1612,"title":1613,"date":1467,"chapterOrder":1614,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1616,"stem":1617,"title":1618,"date":1467,"chapterOrder":1619,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1621,"stem":1622,"title":1623,"date":1467,"chapterOrder":1624,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1626,"stem":1627,"title":1628,"date":1467,"chapterOrder":1629,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1631,"stem":1632,"title":1633,"date":1467,"chapterOrder":1634,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1636,"stem":1637,"title":1638,"date":1467,"chapterOrder":1639,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1641,"stem":1642,"title":1643,"date":1467,"chapterOrder":1644,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1646,"stem":1647,"title":1648,"date":1467,"chapterOrder":1649,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1651,"stem":1652,"title":1653,"date":1467,"chapterOrder":1654,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1656,"stem":1657,"title":1658,"date":1467,"chapterOrder":1659,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1661,"stem":1662,"title":1663,"date":1467,"chapterOrder":1664,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1666,"stem":1667,"title":1668,"date":1467,"chapterOrder":1669,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1671,"stem":1672,"title":1673,"date":1467,"chapterOrder":1674,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1676,"stem":1677,"title":1678,"date":1467,"chapterOrder":1679,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1681,"stem":1682,"title":1683,"date":1467,"chapterOrder":1684,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1686,"stem":1687,"title":1688,"date":1467,"chapterOrder":1689,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1691,"stem":1692,"title":1693,"date":1467,"chapterOrder":1694,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1696,"stem":1697,"title":1698,"date":1467,"chapterOrder":1699,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1701,"stem":1702,"title":1703,"date":1467,"chapterOrder":1704,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1706,"stem":1707,"title":1708,"date":1467,"chapterOrder":1709,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1711,"stem":1712,"title":1713,"date":1467,"chapterOrder":1714,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1716,"stem":1717,"title":1718,"date":1467,"chapterOrder":1719,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1721,"stem":1722,"title":1723,"date":1467,"chapterOrder":1724,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1726,"stem":1727,"title":1728,"date":1467,"chapterOrder":1729,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1731,"stem":1732,"title":1733,"date":1467,"chapterOrder":1734,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1736,"stem":1737,"title":1738,"date":1467,"chapterOrder":1739,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1741,"stem":1742,"title":1743,"date":1467,"chapterOrder":1744,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1746,"stem":1747,"title":1748,"date":1467,"chapterOrder":1749,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1751,"stem":1752,"title":1753,"date":1467,"chapterOrder":1754,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1756,"stem":1757,"title":1758,"date":1467,"chapterOrder":1759,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1761,"stem":1762,"title":1763,"date":1467,"chapterOrder":1764,"chapterDepth":215,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1766,"stem":1767,"title":1768,"date":1467,"chapterOrder":1769,"chapterDepth":215,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1771,"stem":1772,"title":1773,"date":1467,"chapterOrder":1774,"chapterDepth":215,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1776,"stem":1777,"title":1778,"date":1467,"chapterOrder":1779,"chapterDepth":215,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1781,"stem":1782,"title":1783,"date":1467,"chapterOrder":1784,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1786,"stem":1787,"title":1788,"date":1467,"chapterOrder":1789,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1791,"stem":1792,"title":1793,"date":1467,"chapterOrder":1794,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1796,"stem":1797,"title":1798,"date":1467,"chapterOrder":1799,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1801,"stem":1802,"title":1803,"date":1467,"chapterOrder":1804,"chapterDepth":215,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1806,"stem":1807,"title":1808,"date":1467,"chapterOrder":1809,"chapterDepth":215,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1811,"stem":1812,"title":1813,"date":1467,"chapterOrder":1814,"chapterDepth":215,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1816,"stem":1817,"title":1818,"date":1467,"chapterOrder":1819,"chapterDepth":215,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1821,"stem":1822,"title":1823,"date":1467,"chapterOrder":1824,"chapterDepth":215,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1826,"stem":1827,"title":1828,"date":1467,"chapterOrder":1829,"chapterDepth":215,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1831,"stem":1832,"title":1833,"date":1467,"chapterOrder":1834,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1836,"stem":1837,"title":1838,"date":1467,"chapterOrder":1839,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1841,"stem":1842,"title":1843,"date":1467,"chapterOrder":1844,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1846,"stem":1847,"title":1848,"date":1467,"chapterOrder":1849,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1851,"stem":1852,"title":1853,"date":1467,"chapterOrder":1854,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1856,"stem":1857,"title":1858,"date":1467,"chapterOrder":1859,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1861,"stem":1862,"title":1389,"date":1467,"chapterOrder":1863,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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与构建安装","2200-0100",{"path":1865,"stem":1866,"title":1396,"date":1467,"chapterOrder":1867,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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与公共编译选项","2200-0200",{"path":1869,"stem":1870,"title":1871,"date":1467,"chapterOrder":1872,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1874,"stem":1875,"title":1876,"date":1467,"chapterOrder":1877,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\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":1879,"stem":1880,"title":1881,"date":1467,"chapterOrder":1882,"chapterDepth":200,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","Template Extensions and FAQ","2200-0500",{"path":1464,"stem":1482,"title":5,"date":1467,"chapterOrder":1466,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1474},{"path":1470,"stem":1885,"title":1886,"date":1467,"chapterOrder":1476,"chapterDepth":1465,"docKey":1469,"docRoot":1470,"docTitle":1471,"isWikiDoc":1475,"isWikiIndex":1475},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":1888},[1889,1890,1893,1896,1899],{"path":1464,"localeSlug":1478,"i18nKey":1473},{"path":1891,"localeSlug":1892,"i18nKey":1473},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","zh-hant",{"path":1894,"localeSlug":1895,"i18nKey":1473},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","zh-hk",{"path":1897,"localeSlug":1898,"i18nKey":1473},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","zh-tw",{"path":1900,"localeSlug":1901,"i18nKey":1473},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","zh-cn",[1464,1481,1891,1481,1894,1481,1897,1481,1900,1481],1784646871875]