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

Eri*_*ric 14 xcode xcodebuild

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

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

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

谢谢,
埃里克

Ric*_*ung 22

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

  • 在我的情况下,**com.apple.product-type.library.dynamic**将被改为**com.apple.product-type.library.static**.也许这是一个不同的xcode版本,我建议创建一个新的静态lib项目并从那里复制productType (10认同)
  • 对于Xcode 9:静态库是`com.apple.product-type.library.static`,动态库是`com.apple.product-type.library.dynamic`,框架是`com.apple.product-type.framework `,泛型包是`com.apple.product-type.bundle`,单元测试包是`com.apple.product-type.bundle.unit-test`,应用程序是`com.apple.product-type.application` ,命令行工具是`com.apple.product-type.tool`.还有更多,但这些是迄今为止最常见的 (2认同)

Eri*_*ric 4

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

  • 不幸的是,这是正确的解决方案。目前无法将目标从一种目标类型转换为另一种目标类型。 (2认同)