gpt4 book ai didi

batch-file - 使用 CMake 批量评估 ninja clang-tidy 的返回值

转载 作者:行者123 更新时间:2023-12-01 23:14:38 27 4
gpt4 key购买 nike

我正在使用 CMake 3.6 生成 ninja 1.6.0 配置,使用 clang-tidy(LLVM 版本 3.9.1)编译和静态分析我的代码:

# file copied from http://www.labri.fr/perso/fleury/posts/programming/using-clang-tidy-and-clang-format.html

# Additional targets to perform clang-format/clang-tidy
# Get all project files
file(GLOB_RECURSE
ALL_CXX_SOURCE_FILES
*.[chi]pp *.[chi]xx *.cc *.hh *.ii *.[CHI]
)

# Adding clang-tidy target if executable is found
find_program(CLANG_TIDY "clang-tidy")
if(CLANG_TIDY)
add_custom_target(
clang-tidy
COMMAND clang-tidy
${ALL_CXX_SOURCE_FILES}
--
-std=c++11
${INCLUDE_DIRECTORIES}
)
endif()

.clang-tidy 文件:

---
Checks: '-*,readability-*'
AnalyzeTemporaryDtors: false
WarningsAsErrors: '*'
HeaderFilterRegex: 'src/'
User: mgalos
CheckOptions:
- key: readability-identifier-naming.AbstractClassCase
value: CamelCase
...

构建.bat:

cmake -H. -B_build -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=_build/_release -DCMAKE_BUILD_TYPE=GENERIC_RELEASE -DBoost_COMPILER=-vc100

我得到的输出是:

96 条警告被视为错误忍者:构建停止:子命令失败。

%errorlevel% 为 0,尽管 ninja 明确表示子命令失败。这个变量很重要,因为它由构建服务器评估并将构建标记为失败。

如何将 %errorlevel% 正确设置为 != 0?

最佳答案

看起来这是一个 known problem .

您可以采取的缓解措施是将 cmake 的所有输出通过管道传输到一个文件,并扫描该输出以查找指示错误的字符串的出现,这似乎是 build 已停止:在您的情况下,子命令失败。如果存在,只需使用任意非零退出代码退出即可。

@ECHO OFF
cmake -H. -B_build -GNinja (...) > log.txt 2>&1
FOR /F %%G IN ('FINDSTR /C:"build stopped: subcommand failed" log.txt') DO EXIT /B 255

关于batch-file - 使用 CMake 批量评估 ninja clang-tidy 的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42154468/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com