częścią mojego makefile wygląda następująco ...jak tłumić „plik linkera nieużywany” podczas kompilowania
ifdef vis
flg += -framework GLUT -framework OpenGL -Dvis
obj += camfun.o glfuns.o
endif
...
all: driver.cpp header.h $(obj)
$(cc) -o $(exe) driver.cpp $(obj) $(flg) $(lib)
funs.o: header.h funs.cpp
$(cc) -c funs.cpp $(flg)
glfuns.o: header.h glfuns.cpp
$(cc) -c glfuns.cpp $(flg)
camfun.o: header.h camfun.cpp
$(cc) -c camfun.cpp $(flg)
który daje mi następujące ostrzeżenie momencie kompilacji:
g++ -c camfun.cpp -Wno-write-strings -O2 -framework GLUT -framework OpenGL -Dvis
i686-apple-darwin10-g++-4.2.1: -framework: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: GLUT: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: -framework: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: OpenGL: linker input file unused because linking not done
teraz, wiem, że jestem coraz to ostrzeżenie, bo zdecydowanie powinien (opcja -c specjalnie go nie mówi do niej link)! ale chcę go wyłączyć, wiem, że łączę zbyt wiele i jestem z tym w porządku. jak wyłączyć to ostrzeżenie?
kiedy dzielę je na '$ (ldflg)' i '$ (ccflg)', otrzymuję garść ostrzeżeń po 'g ++ -c glfuns.cpp -Wno-write-strings -O2 -Dvis' mówiąc, że pewne rzeczy (GLUT_DOUBLE, na przykład) nie zostały zadeklarowane w tym zakresie. kiedy kompiluję tę linię z ldflg i ccflg, to kompiluje, ale dostaję te ostrzeżenia. EDYCJA: miałem zmieszane ccflg i ldflg! dzięki! – drjrm3
Mam podobny problem: z przekazywaniem -Wl, -rpath-link do gcc. Jest to część naszych CFLAGS i wymagałoby to trochę pracy, aby się go pozbyć. Wiem, że to źle, ale liczyłem na szybkie rozwiązanie. Blast modern GCC dla chcących rzeczy, które muszą być poprawne! (to sarkazm BTW) –