Chúng tôi đang sử dụng tiêu đề precompiled với GCC cho dự án của chúng tôi và xây dựng chúng như thế này:tiêu đề biên dịch sẵn và biên soạn đối tượng phổ cập trên OSX
gcc $(CFLAGS) precompiledcommonlib.h
Bây giờ tôi đang xây dựng dự án trên OSX 10,6 và cố gắng sử dụng tiện lợi tính năng xây dựng cho tất cả các kiến trúc cùng lúc như thế này:
gcc $(CFLAGS) -c -arch i386 -arch x86_64 commonlib.c
Tuy nhiên, có vẻ như điều này không làm việc cho các tiêu đề precompiled:
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)
Chỉnh sửa: Như Mark đã chỉ ra theo XCode, tiêu đề được biên dịch trước phải được xây dựng riêng cho từng kiến trúc, vì vậy câu hỏi của tôi là có cách nào để gcc sử dụng tiêu đề biên dịch trước khi xây dựng các đối tượng phổ quát.
Tôi nhận ra rằng tôi có thể xây dựng từng kiến trúc hoàn toàn riêng biệt như XCode, nhưng tôi sẽ tận dụng khả năng xây dựng chúng cùng một lúc và không phải lộn xộn xung quanh với các cấu hình xây dựng khác nhau.
Tôi chỉ cố gắng làm như vậy, và từ những gì tôi có thể thu thập , bạn _cannot_ tạo ra một tệp PCH trong khi đưa cho GCC hai cờ '-arch' của Apple.Các anh chàng Qt dường như đang làm điều gì đó kỳ lạ để làm việc này, bạn có thể muốn kiểm tra nó ... http://qt.gitorious.org/qt/qt/merge_requests/2193 – Lucas