xcode – 如何正确设置运行路径,搜索路径和安装名称?

前端之家收集整理的这篇文章主要介绍了xcode – 如何正确设置运行路径,搜索路径和安装名称?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个我正在编译为动态库的项目集合.这些.dylib中的每一个依赖于我想放在各种其他目录(即可执行路径中的一些,在加载程序路径中的一些,一些在固定路径上)的其他各种.dylib.

当我在编译的库上运行otool -L时,我得到了这些依赖关系的路径列表,但是我知道如何设置/确定这些路径.他们几乎出现伪随机.我花了几个小时搞砸Xcode中的“Build Settings”来尝试改变这些路径(w / @rpath,@executable_path,@loader_path等),但我似乎无法改变任何东西(如通过运行otool -L).我甚至不知道在哪里添加这些标志,并没有真正了解以下的区别或如何正确使用它们:

链接 – “动态库安装名称
链接 – “运行路径搜索路径”
链接 – “其他链接标志”
搜索路径 – “图书馆搜索路径”

当我在各种库上运行install_name_tool -change时,我可以成功地更改运行路径搜索路径(再次通过运行otool -L验证来确认).

我正在运行Xcode 4.2,我非常接近放弃,只需使用运行install_tool_name的后期构建脚本进行更改.但是它是一个垃圾黑客修复,我不喜欢这样做.

在哪里可以看到dylib依赖关系的搜索/运行路径如何设置?
任何人对我可能做错了什么有什么想法?

解决方法

通常,在我的dylib的目标中,我将INSTALL_PATH也称为“安装目录”到我想要的前缀(例如@executable_path /../ Frameworks).

我将LD_DYLIB_INSTALL_NAME也称为“动态库安装名称”,设置为默认值,即$(DYLIB_INSTALL_NAME_BASE:standardizepath)/ $(EXECUTABLE_PATH)).

Xcode根据您的目标名称进行扩展,例如最终可能是@executable_path /../ Frameworks / MyFramework.framework / Versions / A / MyFramework.

重要的是要将安装路径内置到dylib中,作为构建过程的一部分.之后,当链接B.dylib引用A.dylib时,A.dylib的安装路径被复制到B.dylib中. (这是otool显示的 – 这些复制的安装路径.)所以最好是在dylib中建立正确的安装路径.

在试图让所有的dylibs一起工作之前,请单独检查一次.建立它,然后otool -L在建立的dylib.每个架构的第一行应该是LD_DYLIB_INSTALL_NAME向您显示的.

一旦组织起来,尝试让dylibs相互链接.应该更直接.

猜你在找的iOS相关文章