我正在开发一个IOS应用程序。我正在使用Facebook AsyncDisplayKit库。我的项目在调试模式下运行。但当我尝试Project Archive然后Xcode给出错误消息。错误消息是“词法或预处理器问题”。我没有使用pod。我将我的项目拖到 AsyncDisplayKit.xcodeproj 文件
下面的解释是Facebook ASDK实施 (ASDK也可以用作常规静态库:手动将项目复制到您的代码库,将AsyncDisplayKit.xcodeproj添加到您的工作区。将libAsyncDisplayKit.a,AssetsLibrary和Photos添加到“Link Binary With Libraries”构建阶段。包括 - lc ++ -ObjC在项目链接器标志中。)
My Project Direktory : /devel/workplace/app/MyApp
Library Direktory : /devel/workplace/app/ios-libraries/AsyncDisplayKit
答案 0 :(得分:0)
解决此问题的主要事项是,Archiving将整个项目以及所有源和标头复制到中间文件夹并从那里构建它。它尝试设置可以工作的标题路径,但有时它不了解某些项目设置。
你需要
要找到正确的标题路径,第一步是确定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"
如果这不起作用,我们可能没有完全正确。最好的调试方法是:
使用xcodebuild构建 - 类似于:
xcodebuild -workspace TryADK.xcworkspace -scheme TryADK build archive
在输出中找到您的错误,并查看使用的确切编译器设置。查看所有-I / Users / ...参数 - 其中一个是您的用户标题路径,其中BUILD_ROOT分解为完整路径。
通过与上述发现的结果进行比较,确保它是正确的。