Предварительно скомпилированные заголовки и компиляция универсальных объектов в OSX
Мы используем предварительно скомпилированные заголовки с GCC для нашего проекта и строим их так:
gcc $(CFLAGS) precompiledcommonlib.h
Сейчас я собираю проект на OSX 10.6 и пытаюсь использовать отличную возможность сборки для всех архитектур одновременно, как это:
gcc $(CFLAGS) -c -arch i386 -arch x86_64 commonlib.c
Однако, похоже, это не работает для предварительно скомпилированных заголовков:
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)
Редактировать: Как указал Марк в соответствии с XCode, предварительно скомпилированный заголовок должен быть построен отдельно для каждой архитектуры, поэтому мой вопрос, а есть ли способ, чтобы gcc использовал правильный предварительно скомпилированный заголовок при построении универсальных объектов.
Я действительно понимаю, что могу построить каждую архитектуру совершенно отдельно, как это делает XCode, но я бы предпочел воспользоваться возможностью создавать их одновременно, и мне не пришлось бы возиться с различными конфигурациями сборки.