message("当前CMakeLists.txt所在目录: ${CMAKE_CURRENT_SOURCE_DIR}")
# 不同范围的含义
message("CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR}") # 最顶层CMakeLists.txt目录
message("CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR}") # 当前CMakeLists.txt目录
message("PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}") # 当前项目源目录# 示例项目结构:
# project/
# ├── CMakeLists.txt (顶层)
# ├── src/
# │ ├── CMakeLists.txt (子目录)
# │ └── main.cpp
# └── lib/
# ├── CMakeLists.txt (子目录)
# └── mylib.cpp# 添加当前目录到头文件搜索路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)# 或者使用target_include_directories
target_include_directories(my_target PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
)# 添加当前目录下的源文件
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} SRC_FILES)# 或者明确指定文件
set(SRC_FILES${CMAKE_CURRENT_SOURCE_DIR}/main.cpp${CMAKE_CURRENT_SOURCE_DIR}/utils.cpp
)# 配置头文件
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in${CMAKE_CURRENT_BINARY_DIR}/config.h
)# 添加子目录
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/submodule)# 在 project/src/CMakeLists.txt 中:
message("CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR}") # /path/to/project
message("CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR}") # /path/to/project/src