我正在移植一个编译器项目以使用自动引用计数。前段时间我在 Xcode 中设置了项目,它在没有 ARC 的 Xcode 4.6 中继续构建和运行良好。现在我已经将它的大部分移植到了 ARC,但我发现 Bison 和 Flex 生成的 Objective-C 文件需要禁用 ARC。
(具体原因是因为YYSTYPE
是id
我的项目的 pre-ARC 版本。我可以将其声明为__unsafe_unretained id
并且它会编译,但是 ARC 编译的代码不会将对象放入自动释放池中,其生命周期与我的旧非ARC 代码确实如此,因此它在运行时崩溃。)
但是,我不知道如何为生成的文件禁用 ARC。正常的过程是--fno_objc_arc
在 Build Phases 选项卡中将选项添加到特定的 Objective-C 文件中。当我尝试将该选项添加到 Flex 和 Bison 源文件时,构建失败,因为 Flex/Bison 不理解该选项。
生成的文件位于DERIVED_FILE_DIR
变量指向的 DerivedSources 目录中。但它们不会出现在 Xcode Project Navigator 或 Build Phases 选项卡中。我无法将它们添加到项目中,因为 Debug 和 Release 版本之间的路径不同。所以我不知道如何应用--fno_objc_arc
到他们身上。
有没有人有任何关于在 Xcode 中为 Flex/Bison 派生源设置每个文件构建选项的提示?