2013-09-27 26 views
16

我基本上喜欢实现与http://blog.alexrp.com/2013/09/26/clangs-static-analyzer-and-automake相同,但与CMake。CMake添加调用铛分析器的目标

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

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

analyze: $(analyze_plists) 
.PHONY: analyze 

所以,你可以运行

make analyze 
make clean 

我想我需要使用add_custom_command/add_custom_target并以某种方式改变“目标文件”扩展名只是为了这个目标。

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

任何人都可以指向正确的方向吗?

回答

2

我找到了一种方法:(?$<TARGET_OBJECTS:objlibtarget>

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() 

铛的的plist文件(扩展得到的.o这样)合并为一个报告,仍然是开放的。

18

运行时您可以使用scan-buildcmake

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

scan-build设置CCCXX环境变量,由cmake回升。