如何将CMake自定义目标的警告视为错误?
让CMake自定义Doxygen目标将警告视为错误的解决方法
COMPILE_WARNING_AS_ERROR 是针对C/C++编译目标的属性,你的自定义Doxygen目标不涉及编译流程,所以这个属性对它完全无效,得从Doxygen本身和CMake自定义命令的退出码处理入手解决:
配置Doxygen使其警告触发错误退出
直接修改你的Doxygen配置文件(通常是Doxyfile),将WARN_AS_ERROR设置为YES:WARN_AS_ERROR = YES这样Doxygen在检测到任何警告(比如函数未文档化)时,会返回非零退出码,CMake会将自定义命令的非零返回码判定为构建失败,终止流程并提示错误。
通过CMake动态控制Doxygen警告转错误
如果需要在CMake里灵活开关这个功能,可以用configure_file生成Doxygen配置文件:- 先准备
Doxyfile.in模板文件,其中包含:WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ - 在CMake脚本中设置变量并生成配置文件:
set(DOXYGEN_WARN_AS_ERROR YES) configure_file(Doxyfile.in Doxyfile @ONLY) - 保持原有的自定义命令不变即可。
若你的Doxygen版本支持命令行参数(较新版本),也可以直接在
ADD_CUSTOM_COMMAND的ARGS里添加参数:ADD_CUSTOM_COMMAND( OUTPUT doc/html/index.html COMMAND doxygen ARGS Doxyfile -warnings-as-errors YES COMMENT "Generating documentation..." VERBATIM) ADD_CUSTOM_TARGET( GENERATE_DOCUMENTATION ALL SOURCES doc/html/index.html )- 先准备
完成以上设置后,再执行文档生成时,Doxygen的警告会直接触发CMake构建失败,而非仅在控制台输出。
内容的提问来源于stack exchange,提问作者jpo38
相关产品推荐
相关产品推荐

