15

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

我宁愿生成一个静态库,但是如果我将 [Linking|Mach-O Type] 字段从“动态库”更改为“静态库”,则 Clean Project 和 Build Project 都会抱怨目标的MACH_O_TYPE值无效'静态库'。

有没有一种直接的方法可以让构建生成静态 .a 文件?

谢谢,
埃里克

4

5 回答 5

23

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

于 2010-05-14T07:41:08.483 回答
4

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

于 2009-09-15T17:02:42.513 回答
2

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

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

尽管它保留了原始项目的所有细节(例如构建一个 32/64 fat 二进制文件用于发布但不用于调试),但还是值得坚持下去。结果。

于 2018-04-04T17:19:22.157 回答
0

您必须更改两个设置:

  • 在库下,将 Mach-O 类型设置为静态库
  • 在打包下,将可执行扩展设置为a

这在 Xcode 13.1 上对我有用。

于 2021-12-10T06:25:39.240 回答
0

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

于 2021-01-27T12:03:30.363 回答