Tôi đã thêm tất cả mọi thứ để $PATH
của tôi và tôi đã điều chỉnh SConstruct
tôi để thiết lập các biến môi trường thích hợp, theo những câu trả lời [1, 2, 3]. Bây giờ khi tôi chạySử dụng quét-xây dựng của Clang với scons và C++ 11
scan-build --use-c++=`which clang++` scons
xây dựng bắt đầu, và tôi có thể thấy quá trình chia hai bởi scons
là
/path/to/c++-analyzer ... -std=c++11 ...
Các tập tin đối tượng được xây dựng thành công, nhưng sau đó tôi nhận được một lỗi:
could not find clang line
Lỗi này xảy ra trong c++-analyzer
khi quá trình chia hai không chứa chuỗi -cc1
. Nhưng nếu tôi kiểm tra ps aux
, tôi thấy rõ ràng
/path/to/clang -cc1 ...
Làm cách nào để chương trình có thể xây dựng đúng cách nhưng máy phân tích tĩnh không như thế này?
Để tham khảo, nếu tôi tự chạy
scan-build clang++ <parameters from scons>
sau đó xây dựng thành công và báo cáo được tạo ra!
Tôi cũng có thể "ăn gian" bằng cách thêm
env["ENV"]["PATH"] = os.environ["PATH"]
và sau đó chạy
CXX="scan-build clang++" scons
Tôi chỉ không thể chạy scan-build
trên scons
bản thân với một chưa sửa đổi SConstruct
.
Câu hỏi của bạn được trả lời trong câu trả lời được liên kết đầu tiên: "SCons thường dọn dẹp môi trường trước khi chạy một bản dựng (đây là một tính năng)." –
@ Industrial-antidepressant Tôi đã sử dụng các biến môi trường mà Greg gợi ý. Tôi có thể * xây dựng * thông qua Clang và SCons tốt; Tôi không thể chạy * phân tích tĩnh *. – chrisaycock
Hmm, hãy thử với scan-build --use-analyzer =/path/to/clang –