Tom*_*ift 41 static-libraries ios xcode4 xcode3to4
(之前我的问题已在此处提出,但我没有找到合适的答案.例如Xcode4 Workspace with Static library project&application project)
我正在尝试使用第三方提供的库.它们提供了构建libLibraryName.a文件的XCode项目.他们建议将项目作为子项目添加到我自己的项目中,然后将产品libLibraryName.a文件添加到我的项目设置"Link Binary with Libraries"中描述的库集.
库正确构建:生成.a文件.但该项目在Products组下显示了一个红色的libLibraryName.a文件.我不能让它变成黑色.父项目说它无法找到LibraryName进行链接.
作为测试,我使用XCode 4静态库模板创建了一个新的静态库项目.该项目表现出相同的行为 - 即使构建了.a文件,产品也不会显示"黑色".(编辑:如果你为设备而不是模拟器构建它会变黑).
我知道XCode 4默认将中间和产品文件放在共享位置.我尝试过这个设置,并且我已经更改了设置,将产品文件放在构建设置中描述的文件夹中.两种设置都不起作用.
人们还建议为设备而不是模拟器构建.我试过这个无济于事.
是什么赋予了?如何获取静态库项目以识别其构建产品的位置,并随后在另一个项目中引用此产品?
Tom*_*ift 55
很多箍跳,但现在是我的笔记,我得到了它的工作.
如果你创建一个新的股票XCode4 iOS"可可触摸静态库"项目(并添加一些代码),该项目将开箱即用.但是,当您执行设备构建时,产品文件libLibraryName.a仅变为黑色(从红色表示该文件不存在).模拟器构建并未显示目标是在实际构建时构建的.
在项目目标构建设置中,"按配置构建产品路径"默认为$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 如果您将其更改为其他内容(或者如果您从XCode3.x升级项目$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)$(IPHONEOS_DEPLOYMENT_TARGET),我相信它是默认值),那么产品文件libLibraryName.a永远不会变黑.对我来说,这说XCode中有一个错误.
我可以在没有产品文件构建后变黑(这是一个很好的指标,但是嘿,无论如何.)但我确实需要我的消费项目能够找到库的正确构建,无论是模拟器还是设备.在理想的世界中,会有一个单独的.a文件,其中包含i386/arm6/arm7位,但同样,这不是我的库/库项目.
该XCode4转换指南是什么给我的光.它规定创建一个托管两个项目的工作区,它们都将构建到同一个共享构建目录中.我之前没有使用工作区,所以我使用File/Save As Workspace命令创建新的工作区文件.然后,我添加了库项目,注意确保它作为同行放置到我的主项目而不是孩子.
我必须确保工作区配置为将构建输出放入公共文件夹.在"工作区设置"对话框中,将"构建位置"设置设置为"将构建产品放置在派生数据位置"
我还必须确保在Manage Schemes对话框中检查每个项目的"共享"复选框.
最后,为了指定我的主项目的库依赖项,我只需转到目标Build Phases选项卡,Link Binaries with Libraries部分,然后单击'+',然后从Workspace文件夹下面选择libLibraryName.a文件.请注意,之前我没有尝试过工作区,没有公共构建目录,结果是XCode在链接期间找不到.a文件.
所有的说和做,它就像一个魅力.我不禁想到它应该更容易 - 因为我相信它是在XCode3中.
我很乐意阅读其他人对这一切的经验,或者有关其他(更简单?)方法的任何反馈,以使链接静态库工作得很好.
在这里查看我的答案,看看它是否对您有所帮助:
这些是基于我对自己的库的说明.我认为原始过程中缺少的一步是您不要将静态库作为目标依赖项添加到您的应用程序项目中(在我的说明中的第3步),同时将其链接到"Link Binary with Libraries".您还可能需要执行步骤#5,具体取决于标头由静态库项目链接的方式.
当我使用我自己的应用程序执行此过程时,这些应用程序具有对静态库项目的跨项目引用,它实际上比Xcode 3中的等效过程少一步.
| 归档时间: |
|
| 查看次数: |
40817 次 |
| 最近记录: |