2013-09-27 22 views
16

Zasadniczo chciałbym osiągnąć to samo co http://blog.alexrp.com/2013/09/26/clangs-static-analyzer-and-automake, ale z CMake.CMake dodaj cel do wywoływania analizatora klangów

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 

Więc można uruchomić

make analyze 
make clean 

Chyba muszę korzystać add_custom_command/add_custom_target i jakoś zmienić „obiekt” rozszerzenie pliku tylko do tego celu.

Następnie należy uzyskać listę wygenerowanych plików, aby przekazać je do skryptu w celu połączenia ich w jeden plik wyjściowy.

Czy ktoś może wskazać mi właściwy kierunek?

Odpowiedz

2

znalazłem sposób: (? $<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() 

Łączenie plików plist dzyń (która uzyskać rozszerzenie .o ten sposób) do raportu jest nadal otwarta.

18

Możesz użyć scan-build podczas uruchamiania cmake.

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

scan-build ustawia CC i CXX środowiska zmienne, które są odbierane przez cmake.

Powiązane problemy