2014-05-12 8 views
5

Io uso una particolare libreria che ha alcuni modi di compilarla (codice specifico per piattaforma e destinazione) e, di conseguenza, a volte è completamente vuota. c file nell'archivio; il codice era semplicemente # ifdef'd away. Questo è assolutamente compreso e non un bug: lo voglio in questo modo. E su Linux, questo non è affatto un problema. Se fosse un problema, il linker lo prenderebbe.ranlib/ar in Mac OS mi dà l'avvertenza "non ha simboli"

Eppure ranlib/ar su Mac OS non può essere convinto di sopprimere gli avvertimenti "non ha simboli" per questi file.

Ora, sono un ingegnere e voglio eseguire il mio processo di compilazione assolutamente senza preavviso. Questo è un codice critico che verrà valutato; se ho avvertimenti, la gente mi guarderà in modo divertente. C'è forse qualcosa che ho trascurato? Qualche opzione da linea di comando?

Grazie,

KJ

+0

In tal caso è possibile utilizzare un 'grep -v 'no simboli' come un modo pragmatico per tacere questo (dato che sai cosa stai facendo). – deltheil

+0

Anche a me piacerebbe una soluzione. Anche 'grep -v' è * non * una soluzione accettabile. Presume che sto eseguendo la build. Se qualcun altro clona il repository, non dovrebbe essere necessario annullare gli avvisi durante la creazione. – acm

risposta

1

Due possibilità che vengono in mente sono (1) sempre mettere un po 'il simbolo nella libreria, anche se si tratta di un oggetto di lunghezza zero. (2) fornire wrapper nell'ambiente Makefile a ranlib/ar che filtrano gli avvisi. L'altro utente/build automatizzato non ha bisogno di usare esplicitamente grep -v, può essere in un comando fornito e sostituito, ad esempio:

AR = $(PROJECT_HOME)/bin/project-ar 
RANLIB = $(PROJECT_HOME)/bin/project-ranlib