cmake文件中,INCLUDE_DIRECTORIES() 和 target_include_directories()的区别
这两个 CMake 命令的主要区别在于作用范围和现代 CMake 的推荐用法。
核心区别
| 特性 | INCLUDE_DIRECTORIES() | target_include_directories() |
|---|---|---|
| 作用范围 | 全局(目录级别) | 目标级别(target-level) |
| 影响对象 | 当前目录及子目录中的所有目标 | 仅指定的特定目标 |
| 传播性 | 隐式传播到所有后续目标 | 通过 PUBLIC/INTERFACE 显式控制传播 |
| 现代 CMake 推荐 | ❌ 不推荐(旧式命令) | ✅ 推荐(现代最佳实践) |
详细说明
INCLUDE_DIRECTORIES() - 旧式全局方式
cmake
# 设置后,当前 CMakeLists.txt 及其子目录中的所有目标都会自动包含此路径 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) add_library(mylib src.cpp) # 自动获得上面的包含路径 add_executable(myapp main.cpp) # 自动获得