项目移动到另一个地方后,框架的 link 路径发生了变化

The frameworks' link path has changed after the project moved to another place

请看图:

这是我的项目结构:

  1. 1 个应用(前一个)
  2. 3个框架(自己创建)
  3. 1 cocoa pods 静态库(下一个)

当我cmd+b的时候,所有的子项目都会从最底层开始构建到最上面,这里没有问题,一切都很好。

问题是:

和别人合作太笨太难了,谁能帮忙?

p.s.: 对不起我的英语不好

添加错误图片:

如果要引用相对于源目录的路径,可以使用 $(SRCROOT)。 $(SRCROOT) 将指向您的项目文件所在的位置。 apple doc

一个例子:

如果您的 MyApp 文件夹中有一个包含您的项目文件的目录 x,则该文件夹 x 可以被引用为 $(SRCROOT)/x。在构建设置的框架路径部分输入此内容以引用您的库。

这一切都归结为您无法更改已导入框架的位置,对吗?这是 FBSDKCoreKit.framework 的示例。如果我要更改文件夹位置,则需要更改相对路径。单击名称旁边的文件夹图标并选择新位置

我 post 我这边如何解决这个问题的详细信息:

  • 在框架中:
    1. 在构建设置页面的“每配置构建产品路径”项中设置“$(SRCROOT)/../build”;
    2. shift+cmd+k清理框架构建,然后cmd+b重建框架;
  • 在我的应用程序中
    1. 在构建设置页面的“框架搜索路径”项中添加“$(SRCROOT)/../build”;
    2. 将框架从框架项目的产品拖到构建阶段页面中的“Link Binary With Libraries”;
    3. 将Framework从Framework项目的产品中拖到Build Phases页面的“Copy Files”(你可以添加“Copy Files”项 单击构建阶段页面的左上角);

请注意,如果您在同一个项目中使用了多个框架,并且该框架还链接到另一个框架,就像我在问题中发送的示例一样,您还需要执行上述所有步骤 posted(Framework和App的步骤).


如果你像我的示例一样在你的项目中也使用 cocoapods,你会遇到另一个问题:完成上述所有步骤后,XCode 将在你的框架项目中响应错误,如:

ld: framework not found Pods_xxx.framework

clang: error: linker command failed with exit code 1 (use -v to see invocation)

“xxx”应该是您的框架项目名称。要修复它,您只需删除 project/General/Linked 框架和库 中的 Pods_xxx.framework。重建项目后错误将消失。 你可以找到这个问题的详细信息。

p.s.: the Pods_xxx.framework will appear in General/Linked Frameworks and Libraries after you install pod, so you need remove it again if you run command "pod install"