c++ - CMake add target para invocar el analizador de clang
clang-static-analyzer (2)
Encontre un camino:
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()
La combinación de los archivos plist de clang (que obtienen la extensión .o de esta manera) en un informe aún está abierta ( $<TARGET_OBJECTS:objlibtarget>
?).
Básicamente me gustaría lograr lo mismo que http://blog.alexrp.com/2013/09/26/clangs-static-analyzer-and-automake , pero con 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
Para que puedas correr
make analyze
make clean
Supongo que necesito usar add_custom_command/add_custom_target
y de alguna manera cambiar la extensión del "archivo de objeto" solo para ese objetivo.
Luego, obtenga una lista de los archivos generados para quizás pasarlos a un script para combinarlos en 1 archivo de salida.
¿Alguien puede señalarme en la dirección correcta?
Puedes usar scan-build
cuando cmake
.
scan-build cmake /path/to/source
scan-build make
scan-build
establece las variables de entorno CC
y CXX
que son recogidas por cmake
.