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