我们正在使用预编译的头与GCC为我们的项目,并建立他们是这样的:预编译头和OSX
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)
,同时这样的建设对所有架构的特点
编辑: 正如Mark指出的那样,根据XCode,预编译头文件必须为每个架构分别构建,所以我的问题是,如果有任何方法让gcc在构建通用对象时使用正确的预编译头文件。
我意识到我可以像XCode那样完全分离构建每个架构,但我更愿意利用可能性来同时构建它们,而不必混淆不同的构建配置。
我只是试图做同样的,从我可以收集,你不能在给Apple的GCC两个'-arch'标志时生成一个PCH文件。Qt人似乎正在做一些奇怪的事情,让这个工作,你可能想检查出来... http://qt.gitorious.org/qt/qt/merge_requests/2193 – Lucas 2010-02-07 17:25:18