CMake добавить цель для запуска анализатора лязг

Я бы хотел добиться того же 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 выходной файл.

Может кто-то указать мне верное направление?

18

Решение

Ты можешь использовать scan-build при беге cmake,

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

scan-build устанавливает CC а также CXX переменные среды, которые подобраны cmake,

23

Другие решения

Я нашел путь:

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>?).

3

По вопросам рекламы [email protected]