2014-05-12 8 views
5

Używam konkretnej biblioteki, która ma kilka sposobów jej kompilacji (kod specyficzny dla platformy i celu), w wyniku czego czasami jest całkowicie pusta. c pliki w archiwum; kod był po prostu # ifdef'd away. Jest to absolutnie zrozumiałe, a nie błąd: chcę tego w ten sposób. A w Linuksie to naprawdę nie jest problem. Gdyby to był problem, linker go złapie.ranlib/ar w Mac OS daje mi ostrzeżenie "nie ma symboli"

Mimo to ranlib/ar na Mac OS nie może być przekonany do zignorowania ostrzeżeń "nie ma symboli" dla tych plików.

Teraz jestem inżynierem i chcę uruchomić mój proces kompilacji absolutnie bez ostrzeżenia. To jest krytyczny kod, który zostanie oceniony; jeśli mam ostrzeżenia, ludzie będą patrzeć na mnie śmiesznie. Czy jest coś, co przeoczyłem? Niektóre opcje wiersza polecenia?

Dzięki,

KJ

+0

W takim przypadku możesz użyć 'grep -v 'no symbole "jako pragmatyczny sposób, aby to uciszyć (ponieważ wiesz, co robisz). – deltheil

+0

Chciałbym również rozwiązać ten problem. Również "grep -v" nie jest * akceptowalnym rozwiązaniem. Zakłada, że ​​uruchamiam kompilację. Jeśli ktoś inny sklonuje repozytorium, nie powinien wysyłać ostrzeżeń podczas budowy. – acm

Odpowiedz

1

dwie możliwości, które przychodzą na myśl są (1) zawsze umieścić jakiś symbol w bibliotece, nawet jeśli jest to obiekt o zerowej długości. (2) dostarczaj wrappery w środowisku Makefile do ranlib/ar, które filtrują ostrzeżenia. Drugi użytkownik/automatyczna kompilacja nie musi jawnie używać grep -v, może to być komenda, którą podasz i zamienisz, np:

AR = $(PROJECT_HOME)/bin/project-ar 
RANLIB = $(PROJECT_HOME)/bin/project-ranlib 
Powiązane problemy