这两个 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) # 自动获得