Я бы хотел добиться того же 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 выходной файл.
Может кто-то указать мне верное направление?
Ты можешь использовать scan-build
при беге cmake
,
scan-build cmake /path/to/source
scan-build make
scan-build
устанавливает CC
а также CXX
переменные среды, которые подобраны cmake
,
Я нашел путь:
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-файлов clang (которые таким образом получают расширение .o) в отчете все еще открыто ($<TARGET_OBJECTS:objlibtarget>
?).