【问题标题】:How to compile an OSX Cocoa framework from code in an iPhone project?如何从 iPhone 项目中的代码编译 OSX Cocoa 框架?
【发布时间】:2010-07-10 23:21:19
【问题描述】:

这个问题来自我之前问过的另一个问题:Calling custom Objective-C from a pyobjc application?

我想在运行在 OSX 上的服务器端组件中重用我 iPhone 应用程序中的一小部分应用程序逻辑。根据我在另一个问题中被告知的内容,看来我需要从这个小应用程序逻辑中为 iOS 和 OSX 编译一个“框架”。

如果我们假设我能够将这个框架中的所有代码隔离到一个没有其他非 Cocoa 依赖项的单个 .h/.m 文件对中,那么 XCode 中最简单的方法是什么为每个架构构建这个框架并避免在服务器上重复编码所有这些逻辑?

我尝试在我的 iPhone 项目中添加一个新的 OSX 框架构建目标,但这并没有走得太远,XCode 很快就退出了:

target 指定产品类型“com.apple.product-type.framework”,但“iphonesimulator”平台没有这样的产品类型

非常感谢任何帮助,因为我目前正在实施欺骗以使事情继续发展,但是当实施变得稍微不同步时,这显然会浪费时间和错误来源。

【问题讨论】:

  • 我不确定我是否理解您要执行的操作。您将不得不编译您的代码两次,一次用于 OS X,一次用于 iOS;没有办法解决这个问题。为什么不能只拥有两个包含相同源文件的独立 XCode 项目?
  • 嗨 Adam - 是的,我知道我必须为两种不同的架构(OSX / iOS)进行编译,但我只是想找到最简单的(就正在进行的开发和调试而言)方法这样做。我将尝试创建一个新的 XCode 项目,它只为 OSX 生成框架并且只包含相关文件,但我希望能够从一个 XCode 项目中完成所有这些工作。不确定这是否可行,因为不确定您是否可以指示 XCode 仅将项目文件的子集编译到特定目标中...
  • 所以看起来这种方法很有效,我创建了一个单独的 XCode 项目来编译 OSX 的特定类,现在我可以使用 objc.loadBundle() 将它们加载到服务器上。感谢您的帮助!

标签: iphone cocoa xcode macos


【解决方案1】:

取决于您在自定义类中使用的内容。如果您没有使用 UIKit / AppKit 中的任何内容,那么该类可能会在任一平台上运行良好,否则,您必须使用目标条件并包含专门为这两个平台编写的单独代码。

您可以在一个 Xcode 项目中拥有多个目标,它们的 Base SDK 分别为 Mac / iDevices 设置。

【讨论】:

  • 嗨,Evadne,是的,类中的 AppKit 中没有任何内容需要有条件的#includes 才能使其在 OSX 上运行。我尝试使用 (Architectures = 32/64-bit Universal) 和 (Base SDK = Current Mac OS) 在 XCode 中设置附加目标,但仍然收到我原帖中提到的错误。项目配置中是否还需要做任何其他事情才能在您能想到的单个 XCode 项目中完成这项工作?
【解决方案2】:

亚当对我原来的问题的评论回答了这个问题。虽然仍然有兴趣看看是否有一种方法可以从单个 XCode 项目中完成所有这些工作,但我现在拥有的解决方案对于我想要实现的目标来说已经足够好了。

【讨论】:

    猜你喜欢
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 2015-07-06
    • 2014-03-09
    • 2021-11-02
    • 1970-01-01
    相关资源
    最近更新 更多