26

私は基本的に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 つの出力ファイルに結合します。

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

4

3 に答える 3

6

私は方法を発見しました:

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 ファイル (この方法で拡張子 .o を取得) をレポートに結合することは、まだ開いています ( $<TARGET_OBJECTS:objlibtarget>?)。

于 2014-02-06T14:20:29.617 に答える