cmakelist

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

posted @ 2025-09-29 10:26  cactus001  阅读(27)  评论(0)    收藏  举报