如何将现有Xcode目标从动态更改为静态?

时间:2009-08-28 20:15:59

标签: xcode xcodebuild

我正在使用一个生成动态库的现有项目(Cocoa API)。

我宁愿生成一个静态库,但如果我改变了 [链接| Mach-O类型]字段从“动态库”到“静态库”, 清洁项目和建设项目都抱怨说 target的值为{staticlib'的MACH_O_TYPE值无效。

是否有一种直接的方式来生成构建 一个静态的.a文件?

谢谢,
埃里克

4 个答案:

答案 0 :(得分:22)

使用TextEdit在 YourProjectName.xcodeproj 文件夹中打开 project.pbxproj 文件,搜索 productType 并从“更改其值> com.apple.product-dynamic “to” com.apple.product-static

答案 1 :(得分:4)

我最终创建了一个新的'静态库'项目,然后添加了所有项目 成员。关闭xcode并调出两个项目文件 文本编辑器让我快速完成新项目。

答案 2 :(得分:1)

在这篇文章的帮助下,我设法做到了这一点,并进行了一些挖掘。我必须做的其他更改是将 compiled.mach-o.dylib 更改为 archive.ar 并更改项目文件中的各种引用(包括内部注释,称我为迂腐)从 foo.dylib libfoo.a

我还必须创建一个新的计划'在它构建之前,但这可能是因为我更改了项目的名称,我不确定。此外,当您从.dylib移动到.a时,需要将库引用的任何框架添加到与其链接的应用程序中。

值得坚持不过,因为它保留了原始项目的所有细微之处(例如构建32/64胖二进制文件以便发布但不用于调试)。结果

答案 3 :(得分:0)

删除您的构建目标,然后创建一个新目标,选择“库”并确保选择类型“静态”。在此之后,您只需再次添加源和依赖项即可。