【问题标题】:Common Pre-Complilation Header for iOS and OS X TargetsiOS 和 OS X 目标的通用预编译标头
【发布时间】:2015-05-13 00:18:42
【问题描述】:

我有一个在 iOS 和 OS X 目标之间共享代码的项目。 iOS 目标编译良好。但是 OS X 目标以某种方式包含一个特定的静态库类,该类导入 UIKit 框架,并且由于显而易见的原因引发错误。我不需要在 OS X 目标中包含该类别。我已经从文件检查器中该文件的目标成员选项卡中取消选择 OS X 目标。作为 OS X 开发的新手,在为 OSX 编译时,我不知道在哪里不包括该类。我可能做错了什么?

【问题讨论】:

    标签: ios xcode macos xcode6 uikit


    【解决方案1】:

    标题应该类似于:

    #if TARGET_OS_IPHONE
    // iOS code
    #import <UIKit/UIKit.h>
    #endif
    
    #ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #endif
    

    XCode:

    1. 选择要从中排除类或库的目标
    2. 点击Build Phases > Compile SourcesLink Binary With Libraries
    3. 选择要排除的类或库并点击-

    不应再使用该目标编译该类。

    【讨论】:

    • 谢谢,但我在 Build Phases > Compile Sources 中看不到该类文件。
    • 静态库的一部分。
    • 你是如何链接静态库的?看来图书馆本身可能是这里的问题。
    • 我已经将 iOS 目标的静态库添加到 Build Phases > Link binary with Libraries 中。但是对于 OS X 目标,这些没有链接。我的理解是它不应该包含这些文件。对吗?
    • 正确。您可能需要转到Product > Manage Schemes 并为OS X 目标重新创建一个。如果静态库可用于OS XiOS 并且您正在从源代码编译它,那么您应该能够包含ifdef 语句以避免UIKit 上的UIKit 导入。但目前尚不清楚您是否使用 OS X 的静态库。
    猜你喜欢
    • 2015-11-14
    • 1970-01-01
    • 2012-08-21
    • 2013-10-15
    • 2011-11-03
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 2020-03-05
    相关资源
    最近更新 更多