在需要时配置Xcode 4工作区以构建依赖项的正确方法是什么?

我的情况很简单,一个包含两个兄弟项目的工作区:一个主(iOS)应用程序和一个构建应用程序使用的几个静态库目标的项目.

这是我如何配置构建:

>将主应用程序构建设置中的“用户标题搜索路径”指向库项目位置(通过源树)
>在我的应用程序的主要目标编辑器中 – >构建阶段 – > “Link Binary With Libraries”部分,添加了我想要使用的库产品.
>在该计划中,勾选’查找隐式依赖关系’

在清理(并删除派生数据)之后,构建会在构建主项目期间将此错误告诉我:

ld: library not found for -lChipmunk
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1

果然,如果我查看新创建的派生数据,唯一找到的目标文件是主应用程序,而不是库. * .o文件的广泛“查找”并没有显示任何相关内容,因此库不会丢失,它们肯定不会被构建.

一些补充要点:

>当我在Apple开发论坛上询问过这个问题时,有人建议我在主要目标的Build Phases-> Target Dependencies编辑器中添加明确的deps.但是,您只能在此处将deps添加到同一项目或子项目中的目标;在我的情况下,我有应用程序和图书馆项目作为工作场所兄弟姐妹.
>如果我在主构建之前手动构建每个库,一切都很好.

更新:

我刚刚想出了一个解决方法,即将所有deps的目标添加到主应用程序方案的“构建”部分.我之前尝试过这个但没有成功,但没有意识到我可以在列表中拖动目标以获得正确的构建顺序.现在,构建在正确的顺序中发生,无论是在干净之后,还是在库或主应用程序源更改之后.

我在这里留下问题,因为手动整理构建订单肯定不是必需的.如何设置东西会有问题.

解决方法

编辑方案(交换构建目标,取消/检查“Parallelize Build”和/或“Find Implicit Dependencies”)对我来说不起作用.在静态库中进行任何代码更改后,我仍然需要清理构建项目.搜索开发论坛,我终于找到了 this answer,它创造了奇迹.

Make sure the Identity and Type inspector is showing and select the libWhatever.a file in your application’s project (not the library). If you see Location: Relative to Project [or Relative to Group],this is your problem.

  1. Click Relative to Project and change it to Relative to Build
    Products.
  2. This will change the type of the link,but it will still
    be broken.
  3. Click the locate button and find the output file.

通过Build Phases将静态库添加到现有项目 – >链接二进制文件与库自动使其“相对于组”(如果两者都是同一工作区中的兄弟).以上述方式更改其位置可解决构建依赖性问题,并且在项目导航器中,.a文件应以黑色字母(而不是红色)显示.

相关文章

在有效期内的苹果开发者账号(类型为个人或者公司账号)。还...
Appuploader官网--IOS ipa上传发布工具,证书制作工具跨平台...
苹果在9月13号凌晨(北京时间)发布 iOS 16,该系统的设备可...
计算机图形学--OpenGL递归实现光线追踪
Xcode 14打出来的包在低版本系统运行时会崩溃,报错信息是Li...