Xcode存档文件使用外部库创建

时间:2015-03-04 07:38:13

标签: ios xcode

我正在开发一个IOS应用程序。我正在使用Facebook AsyncDisplayKit库。我的项目在调试模式下运行。但当我尝试Project Archive然后Xcode给出错误消息。错误消息是“词法或预处理器问题”。我没有使用pod。我将我的项目拖到 AsyncDisplayKit.xcodeproj 文件

下面的解释是Facebook ASDK实施 (ASDK也可以用作常规静态库:手动将项目复制到您的代码库,将AsyncDisplayKit.xcodeproj添加到您的工作区。将libAsyncDisplayKit.a,AssetsLibrary和Photos添加到“Link Binary With Libraries”构建阶段。包括 - lc ++ -ObjC在项目链接器标志中。)

enter image description here

My Project Direktory : /devel/workplace/app/MyApp
Library Direktory    : /devel/workplace/app/ios-libraries/AsyncDisplayKit

1 个答案:

答案 0 :(得分:0)

解决此问题的主要事项是,Archiving将整个项目以及所有源和标头复制到中间文件夹并从那里构建它。它尝试设置可以工作的标题路径,但有时它不了解某些项目设置。

你需要

  1. 添加一个具有正确位置的新用户标题路径
  2. 因为您正在使用<>在导入(和AsyncDisplayKit在内部使用它),您需要确保“始终搜索用户路径”设置为YES
  3. 要找到正确的标题路径,第一步是确定Xcode BUILD_ROOT的位置。我做了一个简单的工作区和项目来重现这个。我的xcodebuild行是

    xcodebuild -workspace TryADK.xcworkspace -scheme TryADK -showBuildSettings|grep BUILD_ROOT
    

    在我的系统上显示:

    BUILD_ROOT = /Users/lou/Library/Developer/Xcode/DerivedData/TryADK-bsnchnrjizifmqahbifklpdekupm/Build/Products
    

    现在,你需要找到相对于它的AsyncDisplayKit.h。它可能在BUILD_ROOT / ..中的某个位置,因此复制您获得的BUILD_ROOT文件夹并键入(在构建根目录末尾没有/ Products)

    find /Users/lou/Library/Developer/Xcode/DerivedData/TryADK-bsnchnrjizifmqahbifklpdekupm/Build -name AsyncDisplayKit.h
    

    我有几个文件夹。对Archive构建有意义的是:

    /Users/lou/Library/Developer/Xcode/DerivedData/TryADK-bsnchnrjizifmqahbifklpdekupm/Build/Intermediates/ArchiveIntermediates/TryADK/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/include/AsyncDisplayKit/AsyncDisplayKit.h
    

    在Archiving下,BUILD_ROOT设置为

    BUILD_ROOT = /Users/lou/Library/Developer/Xcode/DerivedData/TryADK-bsnchnrjizifmqahbifklpdekupm/Build/Products
    

    BUILD_ROOT = /Users/lou/Library/Developer/Xcode/DerivedData/TryADK-bsnchnrjizifmqahbifklpdekupm/Build/Intermediates/ArchiveIntermediates/TryADK/Products
    

    所以,你的新标题路径是(使用我的设置):

    "$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts/iphoneos/include"
    
    1. 转到Xcode
    2. 转到您的项目设置。
    3. 用户标题放入搜索栏
    4. 确保始终搜索用户路径为是
    5. 使用我们想出的标题路径添加新的用户标题搜索路径
    6. 如果这不起作用,我们可能没有完全正确。最好的调试方法是:

      1. 使用xcodebuild构建 - 类似于:

        xcodebuild -workspace TryADK.xcworkspace -scheme TryADK build archive
        
      2. 在输出中找到您的错误,并查看使用的确切编译器设置。查看所有-I / Users / ...参数 - 其中一个是您的用户标题路径,其中BUILD_ROOT分解为完整路径。

      3. 通过与上述发现的结果进行比较,确保它是正确的。