# 设置CMake最低版本要求
cmake_minimum_required(VERSION 3.0)
# 设置项目名称和版本
project(ceju VERSION 1.0)
# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# 递归函数用于添加所有子目录
function(add_subdirectories dir)
file(GLOB SUBDIRS RELATIVE ${dir} ${dir}/*)
foreach(subdir ${SUBDIRS})
if(IS_DIRECTORY ${dir}/${subdir})
include_directories(${dir}/${subdir})
add_subdirectories(${dir}/${subdir})
endif()
endforeach()
endfunction()
# 添加顶层include目录
include_directories(${PROJECT_SOURCE_DIR}/include)
# 递归添加所有子目录
add_subdirectories(${PROJECT_SOURCE_DIR}/include)
# 明确列出源文件
set(SRC_FILES
src/monRange.cpp
# ...其他源文件...
)
# 创建可执行文件
add_executable(ceju ${SRC_FILES})
# 遍历.a库文件目录并链接
file(GLOB LIB_FILES "${CMAKE_SOURCE_DIR}/libs/*.a")
foreach(LIB_FILE ${LIB_FILES})
target_link_libraries(ceju ${LIB_FILE})
endforeach()
我们首先使用 include_directories(${PROJECT_SOURCE_DIR}/include)
将根 include
目录添加到包含路径。然后,使用 file(GLOB_RECURSE HEADER_DIRS "${PROJECT_SOURCE_DIR}/include/*")
递归获取所有文件和目录,并检查每一个路径是否为目录(if(IS_DIRECTORY ${HEADER_DIR})
),如果是目录,则使用 include_directories(${HEADER_DIR})
将其添加到包含路径