2011-09-23 2 views
6

Ho un progetto di terze parti nel mio spazio di lavoro Xcode (è una dipendenza per il mio progetto principale) e voglio che Xcode ignori tutti gli avvisi di costruzione di quel progetto di terze parti.Rendi Xcode ignorato avvisi di build LLVM nel progetto di terze parti

Preferibilmente, vorrei ignorare tutti gli avvisi di costruzione per il gruppo fornitore/* nel mio progetto poiché è lì che ho inserito tutto il mio codice di terze parti.

Possibile?

risposta

5

Sì, è possibile, ma solo se si compilano i file di terze parti in una destinazione separata. In questo modo, puoi impostare diversi flag del compilatore.

Diciamo che il tuo obiettivo principale è un'applicazione. Hai definito le impostazioni di compilazione, nonché i flag di avviso del compilatore.

Ora si desidera utilizzare alcune fonti di terze parti. Li importerai nel tuo progetto, ma generano avvertimenti. Ovviamente potresti cambiare le impostazioni del tuo target principale, ma sono abbastanza sicuro di voler mantenere le tue impostazioni.

Basta creare un target aggiuntivo nel progetto, che è una libreria statica. Rimuove i file di terze parti dalla destinazione principale e li aggiunge alla libreria.

Nelle fasi di compilazione del target principale, collegare l'applicazione con la libreria statica.

In questo modo, sarete in grado di utilizzare il codice di terze parti nella vostra applicazione, pur avendo diverse impostazioni del compilatore per il codice di terze parti.

3

se siete preoccupati solo di avvertimento tramite l'inclusione, allora si può avvolgere la comprendono dichiarazioni contenute nel presente:

#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 

se anche voi volete disabilitare gli avvisi di compilazione che genera, quindi è possibile utilizzare -w o GCC_WARN_INHIBIT_ALL_WARNINGS = YES per l'obiettivo di terze parti a cui ci si collega o si raggruppa.

idealmente, si archivierà rapporti con il fornitore se è chiuso. se è aperto, forse dovresti semplicemente aggiustarlo da solo.

+0

Potrebbe funzionare, ma io personalmente penso che questo sia una cattiva opzione, il tuo codice diventerà dipendente al pragma del Clang ... – Macmade

+0

@Macmade i tuoi dati di risposta la seconda parte della mia risposta. se stai collegando alla libreria, * è probabile * che tu voglia * anche * usarlo nel tuo programma ad un certo punto. come si propone di disabilitare gli avvisi generati dalle intestazioni di terze parti quando sono inclusi nel progetto? si noti che è anche possibile eseguire il wrapping del '#pragma clang diagnostic's nei controlli del compilatore (poiché alcuni compilatori si lamenteranno dei pragma sconosciuti, se richiesto). – justin

+0

Hai ragione, ma se gli avvertimenti provengono dai file di intestazione, allora proverò a cercare un'altra soluzione, poiché potrebbe implicare codice molto scadente ...:) – Macmade

4

Vai a fasi di creazione>Fonti di compilazione. Opzionalmente, filtra l'elenco. Selezionare quelli che si desidera escludere e quindi fare doppio clic nell'area vuota sotto la colonna Compiler Flags. Aggiungere -w e premete Invio:

Adding compiler flag to Build Phase

+1

Purtroppo non è possibile filtrare contenendo la cartella. –