2012-12-06 41 views
13

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

/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.

+0

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)." –

+0

@ 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

+0

Hmm, hãy thử với scan-build --use-analyzer =/path/to/clang –

Trả lời

4

Vấn đề là tiếng kêu không nằm trên đường dẫn tìm kiếm trong số execution environment. Điều này giải thích tại sao thêm dòng env["ENV"]["PATH"] = os.environ["PATH"] giải quyết vấn đề.

Để chạy scan-build trên chưa sửa đổi SConstruct bạn có thể đặt vang thực thi (clang++ và có thể clang) trên con đường tìm kiếm được sử dụng bởi các môi trường thực thi, ví dụ bằng cách tạo liên kết tượng trưng từ /usr/bin/clang++ tới số /path/to/clang++ trên Linux của bạn.

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