2011-09-23 24 views
6

Tôi có dự án bên thứ ba trong không gian làm việc Xcode của tôi (đó là phụ thuộc cho dự án chính của tôi) và tôi muốn Xcode bỏ qua tất cả các cảnh báo xây dựng từ dự án bên thứ ba đó.Làm cho Xcode bỏ qua LLVM xây dựng cảnh báo trong dự án của bên thứ 3

Tốt hơn là tôi nên bỏ qua tất cả các cảnh báo xây dựng cho nhóm Nhà cung cấp/* trong dự án của tôi vì đó là nơi tôi đặt tất cả mã của bên thứ ba của mình.

Có thể?

Trả lời

5

Có, có thể, nhưng chỉ khi bạn biên dịch các tệp của bên thứ ba trong một mục tiêu riêng biệt. Bằng cách này, bạn có thể đặt cờ trình biên dịch khác nhau.

Giả sử mục tiêu chính của bạn là một ứng dụng. Bạn đã xác định cài đặt xây dựng của mình, cũng như các cờ cảnh báo trình biên dịch.

Bây giờ bạn muốn sử dụng một số nguồn của bên thứ ba. Bạn nhập chúng vào dự án của bạn, nhưng chúng tạo ra cảnh báo. Tất nhiên, bạn có thể thay đổi cài đặt của mục tiêu chính, nhưng tôi chắc chắn bạn muốn giữ cài đặt của riêng mình.

Chỉ cần tạo mục tiêu bổ sung trong dự án của bạn, đó là thư viện tĩnh. Xóa các tệp của bên thứ ba khỏi mục tiêu chính của bạn và thêm chúng vào thư viện.

Trong các giai đoạn xây dựng của mục tiêu chính, hãy liên kết ứng dụng của bạn với thư viện tĩnh.

Bằng cách này, bạn sẽ có thể sử dụng mã của bên thứ ba trong ứng dụng của mình, trong khi có các cài đặt trình biên dịch khác nhau cho mã của bên thứ ba.

3

nếu bạn đang lo lắng duy nhất về cảnh báo qua bao gồm, sau đó bạn có thể bọc của bạn bao gồm báo cáo trong này:

#pragma clang diagnostic push 
// in reality, you will likely need to disable *more* than Wmultichar 
#pragma clang diagnostic ignored "-Wmultichar" 
#include <TheirLibrary/include.h> 
#pragma clang diagnostic pop 

nếu bạn cũng muốn vô hiệu hóa các cảnh báo xây dựng nó tạo ra, sau đó bạn có thể sử dụng -w hoặc GCC_WARN_INHIBIT_ALL_WARNINGS = YES cho mục tiêu của bên thứ ba mà bạn liên kết đến hoặc nhóm.

lý tưởng, bạn sẽ gửi báo cáo với nhà cung cấp nếu nó bị đóng. nếu nó được mở, sau đó có lẽ bạn nên chỉ vá nó cho mình.

+0

Nó có thể làm việc, nhưng cá nhân tôi nghĩ rằng đây là một lựa chọn tồi tệ, như mã của bạn sẽ trở nên phụ thuộc vào pragmas của Clang ... – Macmade

+0

@Macmade của bạn chi tiết câu trả lời phần thứ hai của câu trả lời của tôi. nếu bạn đang liên kết đến thư viện, * rất có thể là * bạn cũng sẽ muốn * sử dụng * nó trong chương trình của bạn tại một thời điểm nào đó. làm cách nào để đề xuất vô hiệu cảnh báo được tạo bởi tiêu đề của bên thứ ba khi chúng được đưa vào dự án của bạn? lưu ý rằng bạn cũng có thể bọc '#pragma clang diagnostic's trong kiểm tra trình biên dịch (vì một số trình biên dịch sẽ phàn nàn về các pragmas không xác định, nếu được yêu cầu). – justin

+0

Bạn nói đúng, nhưng nếu cảnh báo đến từ các tập tin tiêu đề, sau đó tôi sẽ cố gắng tìm một giải pháp khác, vì nó có thể ngụ ý mã rất crappy ...:) – Macmade

4

Chuyển đến Giai đoạn xây dựng>Nguồn biên dịch. Tùy chọn lọc danh sách. Chọn những cái bạn muốn loại trừ và sau đó nhấp đúp vào vùng trống bên dưới cột Cột biên dịch. Thêm -w và ấn Enter:

Adding compiler flag to Build Phase

+1

Rất tiếc, bạn không thể lọc bằng cách chứa thư mục. –

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