目录结构

{总项目目录}/
  |-- {子项目目录}/
  |   |-- main.cpp
  |-- {子项目目录}/
  |   |-- main.cpp
  |-- CMakeLists.txt
  ```
## CMakeLists.txt

```cmake
cmake_minimum_required(VERSION 3.29)
project({总项目名称})

# 设置C++20标准
set(CMAKE_CXX_STANDARD 20)

# 设置运行时库为MT(静态库)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
# 设置MSVC编译器的utf-8输出
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")

# 为每个项目创建可执行文件的函数
function(create_project_executable project_dir)
    file(GLOB_RECURSE src_files ${project_dir}/*.cpp ${project_dir}/*.h)
    get_filename_component(project_name ${project_dir} NAME)
    add_executable(${project_name} ${src_files})
endfunction()

#遍历子目录并为每个子目录创建一个带有 main.cpp 文件的可执行文件
file(GLOB children RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/*)
foreach (child ${children})
    if (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/${child})
        file(GLOB main_cpp_files ${CMAKE_SOURCE_DIR}/${child}/main.cpp)
        if (main_cpp_files)
            create_project_executable(${CMAKE_SOURCE_DIR}/${child})
        endif ()
    endif ()
endforeach ()