clang - 将静态库与 pch 文件链接会导致错误并禁用 __STATIC__

clang - linking a static library with a pch file causes error with __STATIC__ disabled

我目前正在尝试 link 一堆 Objective C 模块到静态库中。

我收到以下错误,无法找到有关如何在构建 PCH 文件时无法禁用 __STATIC__ 的任何信息。

error: __STATIC__ predefined macro (as opposed to __DYNAMIC__) was disabled in PCH file but is currently enabled

构建PCH文件的命令是:

clang -cc1 -target-cpu x86-64 -g -fno-validate-pch -emit-pch -x objective-c-header afile.pch -o afile.pch.bin -O0 -fmath-errno -fobjc-arc -fobjc-runtime=gnustep -fblocks -pthread -fexceptions -fobjc-exceptions -I...

有很多 -I 选项来定位头文件。

正在构建库文件:

clang -static -o lib.a -include-pch afile.pch.bin ...

具有几乎相同的 link 选项和包含目录。

任何有关如何处理此问题的帮助将不胜感激。

使用clang -cc1选项时,PCH头文件的静态编译开关为:

-static-define

(主编译和 link 也应该使用 --static 而不是 -static;这是来自 gcc 文档而不是 clang 文档)