目录结构123456{总项目目录}/ |-- {子项目目录}/ | |-- main.cpp |-- {子项目目录}/ | |-- main.cpp |-- CMakeLists.txt CMakeLists.txt12345678910111213141516171819202122232425262728cmake_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 ()