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
浙公网安备 33010602011771号