Les en-têtes précompilés et la compilation universelle des objets sur OSX

Nous sommes en utilisant les en-têtes précompilés avec GCC pour notre projet et créer comme ceci:

gcc $(CFLAGS) precompiledcommonlib.h

Maintenant, je suis en train de construire le projet sur OSX 10.6 et tente d'utiliser la fonctionnalité astucieuse de la construction pour toutes les architectures en même temps, comme ceci:

gcc $(CFLAGS) -c -arch i386 -arch x86_64 commonlib.c  

Cependant, il semble que cela ne fonctionne pas pour les en-têtes précompilés:

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)

Edit:
Comme Mark l'a souligné, comme par XCode l'en-tête précompilé doit être établi séparément pour chaque architecture, donc ma question est plutôt si il y a une façon de gcc utilisation le droit d'en-tête précompilé lors de la construction universelle objets.

Je ne rends compte que je pouvais construire chaque architecture complètement séparé comme XCode fait, mais je préférerais prendre avantage de la possibilité de construire en même temps et de ne pas avoir à déranger les différentes configurations de génération.

J'ai juste essayé de faire de même, et de ce que j'ai pu rassembler, vous pas générer un fichier PCH tout en donnant Apple GCC deux -arch drapeaux. L'intervalle Qt gars semblent être en train de faire quelque chose d'étrange à obtenir que cela fonctionne, vous pouvez le vérifier... qt.gitorious.org/qt/qt/merge_requests/2193

OriginalL'auteur rasmusb | 2009-11-18