Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMAKE有条件地运行cppcheck_Cmake_Conditional Compilation_Cppcheck - Fatal编程技术网

CMAKE有条件地运行cppcheck

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

我有一个定义cppcheck的CMAKE文件,如中所述 工作很好,但我希望能够反复编译代码,在我认为接近完成之前不运行cppcheck,然后在提交之前运行cppcheck

cppcheck太慢,无法作为我的编辑/编译/测试/调试周期的一部分

这方面的最佳做法是什么?我想的是定义一个变量并生成文件,然后构建,构建,构建。 e、 g

在CMakeLists.txt中

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
运行它。