CMakeLists.txt(主入口)
│
├── 项目元信息(project, cmake_minimum_required)
├── 编译选项设置(option)
├── 编译标志设置(set(CMAKE_...))
├── 查找依赖库(find_package, include_directories)
├── 注册插件、扩展(register_extension, add_subdirectory(extension))
├── 编译核心模块(add_subdirectory(src), add_library)
├── 编译工具、扩展(tools/, extension/)
├── 单元测试(add_subdirectory(test))
├── 构建目标导出(install, export)
└── 自定义函数定义(function(...))
🔍 实战技巧:怎么理解长文件?
当你拿到一个巨大的 CMakeLists.txt
文件时(比如 DuckDB 的主文件),你可以:
1. 关键词搜索阅读法
使用如下关键词快速定位你感兴趣的模块:
bash
option(
add_subdirectory(
add_library(
add_executable(
target_link_libraries(
include_directories(
2. 从构建目标反向分析依赖
假设你看到:
cmake
add_library(duckdb_static ...)
target_link_libraries(duckdb_shell duckdb_static)
你可以从 duckdb_shell
可执行文件出发,看到它依赖 duckdb_static
,再从 static 库里分析代码依赖。
🧩 DuckDB CMakeLists.txt 拆解与注释解读
📦 1. 项目元信息与构建策略配置
cmake
cmake_minimum