这是我如何配置构建:
>将主应用程序构建设置中的“用户标题搜索路径”指向库项目位置(通过源树)
>在我的应用程序的主要目标编辑器中 – >构建阶段 – > “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的目标添加到主应用程序方案的“构建”部分.我之前尝试过这个但没有成功,但没有意识到我可以在列表中拖动目标以获得正确的构建顺序.现在,构建在正确的顺序中发生,无论是在干净之后,还是在库或主应用程序源更改之后.
我在这里留下问题,因为手动整理构建订单肯定不是必需的.如何设置东西会有问题.
解决方法
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.
- Click Relative to Project and change it to Relative to Build
Products.- This will change the type of the link,but it will still
be broken.- Click the locate button and find the output file.
通过Build Phases将静态库添加到现有项目 – >链接二进制文件与库自动使其“相对于组”(如果两者都是同一工作区中的兄弟).以上述方式更改其位置可解决构建依赖性问题,并且在项目导航器中,.a文件应以黑色字母(而不是红色)显示.