我正在建立一个图书馆。我希望它能够编译并包含另一个(这是googleConversion),但我需要使用xcconfig文件(因为对于某些构建我想不包括库)
以下:Link binary with static library in xcconfig
所以我做的是添加我的xcconfig文件:
LIBRARY_SEARCH_PATHS = $(inherited) $(PROJECT_DIR)/../Vendors/Analytics/GoogleConversion/GoogleConversionTrackingSDK-iOS-3.2.0
OTHER_LDFLAGS =$(inherited) -ObjC -L$(PROJECT_DIR)/../Vendors/Analytics/GoogleConversion/GoogleConversionTrackingSDK-iOS-3.2.0 -lGoogleConversionTracking
让我在没有警告的情况下编译,但不要在我的.a
中包含该库我设法做到的唯一方法是在Link Binary With Library的构建阶段添加库。
但如果我想能够自动化我的不同类型的构建,那么我无法做到这一点
听起来应该很简单;(
也许其他一些配置阻止这些线路工作?
我尝试检查我的日志,我可以在我的"检查依赖项"在Libtool导出路径中,我可以看到我的OTHER_LDFLAGS的解析路径(当我从我的xcconfig中删除它时会消失)但不会在我将我的lib置于构建阶段时存在的-lGoogleConversionTracking。
(我有更多的事情发生,如果我从构建阶段完全删除面板,就像libtool中没有任何东西一样,但它在某种程度上是有意义的并且它不是什么大问题)
提前谢谢!
答案 0 :(得分:1)
最后得到它!!!!
因为在xcode 6中解决了旧的xcode错误。
https://tarunsharmaios.wordpress.com/2014/09/12/xcode6-static-library-linking-broken/
在构建静态库时,BlockquoteXcode将不再将构建设置OTHER_LDFLAGS中的选项传递给libtool,在构建任何其他类型的产品时,它也不会将OTHER_LIBTOOLFLAGS中的选项传递给Mach-O链接器。以前,两个设置中的所有选项都将传递给两个工具。确保选项位于正在构建的产品类型,静态库或其他组件的正确构建设置中。 (4285249)
答案 1 :(得分:0)
就我而言,它看起来像:
LIBRARY_SEARCH_PATHS = $(inherited) "${SRCROOT}/thirdparties/CardIO-5.1.0"
OTHER_LDFLAGS = $(inherited) -ObjC -lz -lc++ -lCardIO
但我的libs放在源文件夹内与*.xcodeproj
- 文件相同的级别。
我认为使用"\..\"
的路径不适用于xcode。
可以使用您的方案中的脚本阶段解决此问题。
Product->Scheme->Manage Schemes
打开您的计划。New run script action
Build->Pre-actions
libGoogleConversionTracking.a
复制到$ {SRCROOT} LIBRARY_SEARCH_PATHS
文件*.xcconfig
的新路径