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