美文网首页
oc引入头文件,Build Settings

oc引入头文件,Build Settings

作者: 崔盛希 | 来源:发表于2018-11-16 11:10 被阅读10次
#import 引入头文件 有两种方式
  • < > :是只从 Header Search Paths 中搜索;是从系统目录空间 (对应 Header Search Paths)中搜索文件

  • " ":能从 Header Search Paths 和 User Header Search Paths 中搜索;从用户目录空间(对应 User Header Search Paths)中搜索文件

换言之 ,假如你把 路径加到 User Header Search Paths 中,那么你用 #import <file.h> 的方式去引入对应的头文件,就会报错。 如果加到 Header Search Paths, 就没有问题了。

所以在修改文件路径这个选项的时候使用
"$(SRCROOT)/当前工程名字/需要包含头文件所在文件夹"
将上面的双引号里面的字符串拷贝之后,你会发现这个$(SRCROOT),会自动变成当前工程所以的目录。
这样就可以了,发给别人,别人也不用再去修改路径了。

绝对路径: 点击工程某个文件,右键“show in finder”打开终端,cd 把文件夹拖入,即可出现一个路径,这个就是绝对路径.
相对路径: 相对于当前工程文件的路径,./表示当前工程文件夹,,../表示上层目录 ,在xcode里$(PROJECT_DIR)也表示当前工程文件夹目录
这里还要了解一下在iOS中怎么代表相对路径和绝对路劲

  • $(SRCROOT)代表的是项目根目录下
  • $(PROJECT_DIR)代表的是整个项目
  • ./也表示当前工程文件夹
  • ../表示上层目录

⚠️⚠️⚠️⚠️⚠️⚠️:以上相对路径后面拼接的必须是项目中真实文件夹名,工程内部的group无效!

当导入的静态库使用了类别,其他链接标签设需要设为-ObjC


Build Settings 变量解读

@executable_path 这个变量表示可执行程序所在的目录.

@loader_path 这个变量表示每一个被加载的 binary (包括App, dylib, framework,plugin等) 所在的目录.

在一个程序中, 对于每一个模块, @loader_path会解析成不用的路径, 而 @executable_path 总是被解析为同一个路径(可执行程序所在目录). 比如一个会被多个程序调用的 plugin, 位于/path/Flash Player.plugin/Contents/MacOS/Flash Player, 依赖 /path/Flash Player.plugin/Contents/Frameworks/XPSSO.dylib 那么 XPSSO.dylibINSTALL_PATH 可以设置为 @loader_path/../Frameworks, 这样设置的话, 不论 Flash Player.plugin 目录放到什么位置, XPSSO.dylib 都能正确的被加载.

@rpath 和前面两个不同, 它只是一个保存着一个或多个路径的变量. 比如 XPSSO.dylib 被两个 .app 使用, 且被包含的路径不同。比如:softA.app/Contents/MacOS/dylib/XPSSO.dylib
softB.app/Contents/MacOS/Frameworks/XPSSO.dylib将 XPSSO.dylib 的 INSTALL_PATH 设置成 @loader_path/../dylib@loader_path/../Frameworks 都只能满足其中一个 .app 的需求. 要解决这个问题, 就可以用 @rpath 将 XPSSO.dylib 的 INSTALL_PATH 设置成 @rpath, 然后在编译 softA.app, softB.app 时分别指定 @rpath 为 @loader_path/../dylib, @loader_path/../Frameworks, 问题得到了解决.

@rpath 的另一个优点是可以设置多个路径. 如果 softA.app 还需要使用另一个 .plugin (假设它的 INSTALL_PATH 也设置成了 @rpath), 位于 @loader_path/../plugin, 把这个路径加到 @rpath 即可.

XPSSO.dylib的Build Settings中设置Installation Directory

image

在 softA.app或softB.app 中设置 Runpath Search Paths(对应了@rpath)

image

相关文章

网友评论

      本文标题:oc引入头文件,Build Settings

      本文链接:https://www.haomeiwen.com/subject/idipfqtx.html