2012-01-10 23 views
32

Có ai biết một cách chính thức được hỗ trợ để bao gồm mã chỉ xây dựng gỡ lỗi trong Qt không? Ví dụ:Qt có cung cấp định nghĩa gỡ rối (được bảo đảm) không?

#ifdef QT_DEBUG 
// do something 
#endif 

Về cơ bản giống như Q_ASSERT nhưng đối với các thử nghiệm phức tạp hơn.

Tôi dường như không tìm thấy bất kỳ tài liệu nào cho biết khung Qt đảm bảo xác định macro gỡ lỗi. Nếu không có, thì một cách hợp lý không chính thức là cách nào để triển khai dự án tính năng rộng này?

Trả lời

39

Qt xác định QT_NO_DEBUG để xây dựng bản phát hành. Nếu không, QT_DEBUG sẽ được xác định.

Tất nhiên bạn có thể tự do chỉ định bất kỳ DEFINES nào trong tệp .pro của bạn và phạm vi chúng cho debug hoặc release.

+0

Bạn có biết bất cứ bằng chứng rằng 'QT_NO_DEBUG' được hỗ trợ chính thức cho sử dụng ngoài khuôn khổ Qt? –

+1

Không, chỉ cần đọc nguồn. Mặc dù không chắc rằng các định nghĩa trong các tiêu đề API đã xuất bản được thay đổi mà không có lý do chính đáng. – laalto

13

Một cách khác là viết một cái gì đó trong tập tin dự án của bạn như:

debug { 
    DEFINES += MYPREFIX_DEBUG 
} 
release { 
    DEFINES += MYPREFIX_RELEASE 
} 

Sau đó, bạn sẽ không phụ thuộc vào định nghĩa nội Qt.

+0

Không phải là một đề xuất không hợp lý nhưng tôi đã ** đặc biệt ** tìm cách tránh các định nghĩa bổ sung. –

+0

Tại sao? Bạn thấy điều gì bất lợi trong định nghĩa bổ sung? – eSKon

4

Đối với chế độ debug kiểm tra:

#ifdef QT_DEBUG 
    //Some codes 
#endif 

Đối với chế độ phát hành séc:

#ifndef QT_DEBUG //<== Please note... if not defined 
    //Some codes 
#endif 
Các vấn đề liên quan