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