2013-09-27 9 views
16

私は基本的にはhttp://blog.alexrp.com/2013/09/26/clangs-static-analyzer-and-automakeと同じですが、CMakeと同じようにしたいと思います。CMakeはclangアナライザを呼び出すターゲットを追加します

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 

だから、私はadd_custom_command/add_custom_targetを使用して、何とかちょうどその目標のために、「オブジェクトファイル」の拡張子を変更する必要があると思います

make analyze 
make clean 

を実行することができます。

その後、生成されたファイルのリストを取得し、それらをスクリプトに渡して1つの出力ファイルに結合します。

誰でも正しい方向に向けることができますか?

答えて

2

私は方法を見つけた:レポートに(この方法の.o拡張子を取得)打ち鳴らすののplistファイルを組み合わせる

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

はまだ(?$<TARGET_OBJECTS:objlibtarget>)が開いています。

18

cmakeを実行するとscan-buildを使用できます。

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

scan-buildcmakeによってピックアップされCCCXX環境変数を設定します。

関連する問題