跨不同构建目录的 Xcode 依赖项?

标签 xcode dependencies

我正在尝试为包含多个可执行文件和静态库的项目设置 Xcode。我创建了多个目标并设置了链接和依赖项,最初一切正常。捕获...

这是一个已有的项目,它已经有了 Visual Studio 和 Makefile 版本。这些构建将库放在 中库/调试 目录和 中的可执行文件bin/调试 .因此,在 Xcode 中,我将 Build Products Path 分别更改为“lib”和“bin”(因此我们可以为所有平台使用一组文档)。这会将编译的目标放在正确的位置,但完全破坏了链接(未找到库)和依赖项。

我可以通过添加 来修复链接$(SRCROOT)/lib/调试到每个可执行文件的库搜索路径(但感觉 Xcode 应该能够自己解决这个问题,这让我觉得我做错了什么)。

但是 - 我不知道如何让依赖项再次工作。如果我更改库源文件,库将重建,但不会重建依赖的可执行文件。如果我强制构建可执行文件 Xcode 返回成功而不做任何事情;它认为目标是最新的。如果我清理目标然后重建它就可以了。

那么,这里有什么想法吗? Xcode 在这方面从根本上是愚蠢的,还是我(我倾向于后者)?

更新:我在 http://share.industriousone.com/XcodeDepsIssue.zip 上发布了一个示例项目来演示这个问题。 .构建一次,然后修改 MyStaticLib.c 并再次构建它。可执行文件不会重新链接(它应该)。非常感谢您对此的任何帮助。

最佳答案

starkos,感谢您发表您的结论。它也验证了我的经验。这种情况真的把我搞砸了,所以很高兴知道我不仅仅是错过了什么。

然而,我确实发现了一种避免创建多个项目或将库及其依赖项保留在同一目录中的解决方法。这是一个黑客,但它确实在这里工作。

我知道这有点晚了,但总比没有好。

对于依赖库,添加一个“Copy Files Build Phase”,以Absolute Path为目标,路径文本字段应该是DEPENDENT目标所在的目录。然后点击Products,找到依赖库(以.a结尾),拖拽到“Copy Files Build Phase”。如果您现在构建,这将像以前一样将库放入其自己的目录中,然后还将其复制到依赖项的目标目录中。

对于依赖项,您现在可以从库搜索路径中删除依赖项的输出目录。这将导致它找到库副本。如果您这样做,则每次重新链接依赖项 .a 时确实会重新链接依赖项。

当然,负面因素是复制的额外时间,以及为库的每个依赖项指定(在复制阶段)目标目录的必要性。虽然击败了其他选择......

关于跨不同构建目录的 Xcode 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1456806/

相关文章:

iphone - 一种在大型 Xcode 项目中查找孤立图像的方法

c++ - 包含新 ID 是否需要重新编译?

gradle - 无法获得分类依赖

java - netbeans 依赖库在更改后无法编译

ios - 在 Swift 中向数组添加元素

iphone - 在 Xcode 中启用以编程方式创建的按钮

iOS 将数据库更新移出主线程 - 插入启动 View

ios - 如何使用 NSXMLParser 将 NSMutableDictionary 中的键值对设置为 XML 属性元素值

docker - 检索https://nvd.nist.gov/feeds/json/cve/1.0/nvdcve-1.0-2020.meta时出错;收到回应码404

android - 如何在 Gradle 中查找依赖冲突