我們正在使用預編譯的頭與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