CMake添加调用clang分析器的目标

时间:2013-09-27 12:11:45

标签: c++ cmake clang clang-static-analyzer

我基本上喜欢和http://blog.alexrp.com/2013/09/26/clangs-static-analyzer-and-automake一样,但是使用CMake。

analyze_srcs = foo.c
analyze_plists = $(analyze_srcs:%.c=%.plist)
CLEANFILES = $(analyze_plists)

$(analyze_plists): %.plist: %.c
  @echo "  CCSA  " $@
  @$(COMPILE) --analyze $< -o $@

analyze: $(analyze_plists)
.PHONY: analyze

所以你可以运行

make analyze
make clean

我想我需要使用add_custom_command/add_custom_target并以某种方式更改仅针对该目标的“目标文件”扩展名。

然后获取生成文件的列表,或者将它们传递给脚本,将它们组合成1个输出文件。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:23)

运行scan-build时,您可以使用cmake

scan-build cmake /path/to/source
scan-build make

scan-build设置由CC选取的CXXcmake个环境变量。

答案 1 :(得分:4)

我找到了一种方法:

function(add_clang_static_analysis target)
    get_target_property(SRCs ${target} SOURCES)
    add_library(${target}_analyze OBJECT EXCLUDE_FROM_ALL ${SRCs})
    set_target_properties(${target}_analyze PROPERTIES
                          COMPILE_OPTIONS "--analyze"
                          EXCLUDE_FROM_DEFAULT_BUILD true)
endfunction()

将clang的plist文件(以这种方式获得扩展名。)合并到一个报告中仍然是开放的($<TARGET_OBJECTS:objlibtarget>?)。