You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake中file(GLOB)目录不存在无警告?如何设置提示或终止脚本?

解决CMake file(GLOB)文件夹不存在时静默失败的问题

CMake的file(GLOB)确实会在目标目录不存在时静默返回空列表,这很容易埋下隐蔽bug。要实现目录不存在时的警告或终止,只需在执行GLOB前手动添加目录存在性检查即可:

方法1:检查目录并发出警告

如果希望仅提示问题但继续构建,可以用message(WARNING):

set(TARGET_DIR "blablablabla")

# 验证目标目录是否存在
if(NOT EXISTS "${TARGET_DIR}")
    message(WARNING "指定的目录 ${TARGET_DIR} 不存在,file(GLOB) 将返回空列表")
endif()

# 执行文件收集
file(GLOB mylist "${TARGET_DIR}/*")

方法2:检查目录并终止构建

如果要强制终止脚本以避免后续错误,改用message(FATAL_ERROR):

set(TARGET_DIR "blablablabla")

if(NOT EXISTS "${TARGET_DIR}")
    message(FATAL_ERROR "指定的目录 ${TARGET_DIR} 不存在,构建终止")
endif()

file(GLOB mylist "${TARGET_DIR}/*")

额外提示

CMake官方其实不推荐使用file(GLOB),因为当新增文件时,CMake不会自动重新扫描目录,需要手动触发重新配置。如果项目允许,建议直接显式列出所有需要的文件,从根源减少这类路径相关的隐蔽问题。

内容的提问来源于stack exchange,提问作者Nullarity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:04:56