Stiamo usando intestazioni precompilate con GCC per il nostro progetto e li costruiamo in questo modo:intestazioni precompilate e la compilazione di oggetti universali su OSX
gcc $(CFLAGS) precompiledcommonlib.h
Ora sto costruendo il progetto su OSX 10.6 e cercando di utilizzare il nifty caratteristica di costruzione per tutte le architetture allo stesso tempo, in questo modo:
gcc $(CFLAGS) -c -arch i386 -arch x86_64 commonlib.c
Tuttavia, sembra che questo non funziona per le intestazioni precompilate:
gcc $(CFLAGS) -arch i386 -arch x86_64 precompiledcommonlib.h
Undefined symbols for architecture i386:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
lipo: can't open input file: /var/folders/z1/z1A0sPkqGDyPrZWo9ysVK++++TI/-Tmp-//cc3W2gwd.out (No such file or directory)
Modifica: Come Mark ha indicato come per XCode l'intestazione precompilata deve essere costruita separatamente per ogni architettura, quindi la mia domanda è piuttosto se c'è un modo per fare in modo che gcc usi l'intestazione precompilata giusta quando si costruiscono oggetti universali.
Mi rendo conto che potrei costruire ogni architettura completamente separata come fa XCode, ma preferirei piuttosto sfruttare la possibilità di costruirle nello stesso momento e non dover gironzolare con configurazioni di build diverse.
ho solo cercato di fare lo stesso, e da quello che ho potuto capire , non si genera un file PCH mentre si assegnano due flag '-arch' di GCC di Apple.I ragazzi Qt sembrano fare qualcosa di strano per farlo funzionare, potresti voler controllare ... http://qt.gitorious.org/qt/qt/merge_requests/2193 – Lucas