cmake glob关键字

CMake 中,GLOB 是一个用于 匹配文件路径的函数,可以自动查找符合某种模式的文件,比如 .cpp.h 文件列表。它常用于自动收集源代码文件,而不需要手动列出每个文件名。


🧱 基本语法

cmake
file(GLOB <变量名> [RELATIVE <路径>] [CONFIGURE_DEPENDS] <匹配表达式>...)

✅ 示例用法

自动匹配所有 .cpp.h 文件

cmake
file(GLOB SRC_FILES "*.cpp" "*.h") add_executable(MyApp ${SRC_FILES})

或者:

c
file(GLOB_RECURSE SRC_FILES "src/*.cpp" "include/*.h")

🧠 常用参数说明

参数作用说明
GLOB 匹配当前目录下的文件
GLOB_RECURSE 递归匹配子目录中的文件
CONFIGURE_DEPENDS 让 CMake 在构建时检测新增的文件(否则新增文件不会自动纳入构建)
RELATIVE 返回相对于某路径的文件路径

📌 示例:带 CONFIGURE_DEPENDS

cmake
file(GLOB SRC_FILES CONFIGURE_DEPENDS src/*.cpp) add_executable(MyApp ${SRC_FILES})

如果你在 src/ 目录中添加了新 .cpp 文件,使用 CONFIGURE_DEPENDS 会确保下次构建时自动检测这些文件。


⚠️ 注意事项

GLOB 虽然方便,但官方并不推荐用于收集源码文件。

原因:

  • GLOB 不会自动触发重新配置(除非加 CONFIGURE_DEPENDS

  • 无法显式控制每个源文件,可能导致构建不可控

官方推荐的做法是手动列出源码文件,尤其是大型项目中更安全、清晰、可维护。

posted on 2025-06-03 15:46  lydstory  阅读(181)  评论(0)    收藏  举报

导航