为什么有时候Xcode找不到framework或者静态库?

很多人习惯了用Cocoapods管理 Xcode 工程依赖,较少直接引一个framework,静态库或者动态库。
一般工程中加入framework或者静态库步骤为:

  • 首先,静态库或者framework复制到工程目录中
  • 然后,Xcode依次点击工程名>Targets > Build Phases > Link Binary With Libraries
  • 最后,把framework或者静态库直接拖进去编译就行

以上步骤能编译成功的前提是第一步把framework或者静态库复制到了工程目录中。Xcode 在添加对应的framework或者静态库时自动添加了相对于工程根目录的搜索目录。
但有时候我们就不想把库复制到工程目录呢?这时候Xcode不会默认新增搜索目录,如果不添加搜索路径库文件就找不到了。
这时候就该让各个搜索目录上场了。

ps:在工程名>Targets > Build Settings

  • Framework Search Path :framework搜索目录
  • Library Search Path : 静态库搜索目录
  • Runpath Search Path: 动态库搜索目录

所以当我们把静态库或者framework放在工程目录中,然后添加到工程名>Targets > Build Phases > Link Binary With Libraries时Xcode自动在Library Search Path或者Framework Search Path中添加了$(PROJECT_DIR)或者$(PROJECT_DIR)/XXX。这样就制定了搜索目录。放在工程目录之外的xcode 就不会新增此搜索目录项。需要开发者自行添加并确保路径准确。这时候通常需要用到下面两个宏来拼接相对目录:

  • $(PROJECT_DIR): 表示工程根目录,也就是xxx.xcodeproj所在的目录,我们可以通过拼接或者../来从制定相对目录
  • ${PODS_ROOT}:表示Cocoapods生成的 Pods目录

你可能感兴趣的:(为什么有时候Xcode找不到framework或者静态库?)