2013-09-27 83 views
16

Về cơ bản tôi muốn đạt được giống như http://blog.alexrp.com/2013/09/26/clangs-static-analyzer-and-automake, nhưng với CMake.CMake thêm mục tiêu để gọi máy phân tích clang

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 

Vì vậy, bạn có thể chạy

make analyze 
make clean 

Tôi đoán tôi cần phải sử dụng add_custom_command/add_custom_target và bằng cách nào đó thay đổi đuôi "tập tin đối tượng" chỉ dành riêng cho mục tiêu đó.

Sau đó nhận danh sách các tệp được tạo để có thể chuyển chúng sang tập lệnh để kết hợp chúng thành 1 tệp đầu ra.

Có ai có thể chỉ cho tôi đúng hướng không?

Trả lời

2

Tôi tìm thấy một cách: (? $<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() 

Kết hợp các file plist kêu vang của (mà được mở rộng .o theo cách này) vào một bản báo cáo vẫn còn mở.

18

Bạn có thể sử dụng scan-build khi chạy cmake.

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

scan-build cài đặt các biến CCCXX môi trường được nhặt bởi cmake.

Các vấn đề liên quan