2013-09-27 21 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回升。