CMAKE有条件地运行cppcheck
我有一个定义cppcheck的CMAKE文件,如中所述 工作很好,但我希望能够反复编译代码,在我认为接近完成之前不运行cppcheck,然后在提交之前运行cppcheck cppcheck太慢,无法作为我的编辑/编译/测试/调试周期的一部分 这方面的最佳做法是什么?我想的是定义一个变量并生成文件,然后构建,构建,构建。 e、 g 在CMakeLists.txt中CMAKE有条件地运行cppcheck,cmake,conditional-compilation,cppcheck,Cmake,Conditional Compilation,Cppcheck,我有一个定义cppcheck的CMAKE文件,如中所述 工作很好,但我希望能够反复编译代码,在我认为接近完成之前不运行cppcheck,然后在提交之前运行cppcheck cppcheck太慢,无法作为我的编辑/编译/测试/调试周期的一部分 这方面的最佳做法是什么?我想的是定义一个变量并生成文件,然后构建,构建,构建。 e、 g 在CMakeLists.txt中 if(CPPCHECK STREQUAL "yes") set(CMAKE_CXX_CPPCHECK "cppcheck") en
if(CPPCHECK STREQUAL "yes")
set(CMAKE_CXX_CPPCHECK "cppcheck")
endif()
在编写代码时
cmake3 -G "Unix Makefiles" ..
cmake3 --build .
cmake3 --build .
然后在提交代码之前
cmake3 -G "Unix Makefiles" -DCPPCHECK=yes ..
cmake3 --build .
有更好的方法吗?我主要像上面描述的问题那样做-只有在设置了特定变量时才运行代码分析。在我的顶级
CMakeLists.txt中,我通常遵循这样的模式:
option(ENABLE_CODE_ANALYSIS "Run code analysis" OFF)
message(STATUS "ENABLE_CODE_ANALYSIS ${ENABLE_CODE_ANALYSIS}")
if(ENABLE_CODE_ANALYSIS)
find_program(cppcheck cppcheck)
message(STATUS "cppcheck ${cppcheck}")
if(NOT (cppcheck MATCHES "NOTFOUND"))
# Notes:
# - unmatchedSuppression needed since not all source files are
# analyzed simultaneously
# - unusedFunction needed since not all source files are
# analyzed simultaneously
# - template needed to force "warning" into output string, and
# to make the 'id' available for suppression
set(CMAKE_CXX_CPPCHECK "${cppcheck}"
"--enable=all"
"--inconclusive"
"--inline-suppr"
"--quiet"
"--suppress=unmatchedSuppression"
"--suppress=unusedFunction"
"--template='{file}:{line}: warning: {id} ({severity}): {message}'")
endif()
endif(ENABLE_CODE_ANALYSIS)
通常,我会对clangtidy
执行相同的操作,并让启用代码分析
同时启用cppcheck
和clangtidy
我默认不进行代码分析,因为代码分析往往很慢。但是在生成生成系统时,可以通过执行cmake-G“my generator”-DENABLE_code_ANALYSIS=ON..
来启用它。使用add_custom_target
创建自定义目标,并随时使用make your target
运行它。