所以这是独家新闻:
我有一个构建标准库的xcode项目。这个标准库生成一个“.a”文件,以及一些使用所述lib的客户端可以看到的头文件。
标准的lib构建到一个set目录:
/builds/foo/bar/build/
在构建库之后看起来像这样:
/builds/foo/bar/build/
lib.a
headers/
head1.h
head2.h
head3.h
我有一个需要使用此库的客户端应用程序。我需要使用客户端应用程序的每个版本重建标准库,因此我将其设置如下:
我创建了一个客户端应用程序,向其添加了标准的lib .xcodeproj文件,并将其作为直接依赖项连接起来。我在“链接二进制文件库”部分中将其正确链接。然后,按照标准套装,我将其设置为客户端应用程序以在以下位置搜索头文件:
/builds/foo/bar/build/headers/
这有效......有点儿。如果我删除上面列出的目录并尝试重建,它将失败,因为它找不到头文件。
“好吧,Duh!你删除了包含头文件的目录!”。
是的,但客户端构建的设置方式是在构建客户端应用程序之前编译静态库并将其放在/ builds / foo / bar / build目录(包括头文件)中。它应该找到这些头文件。它们在编译客户端之前存在,并且“Header Search Path”设置正确。
正如我之前所说,如果我删除包含lib和头文件的目录,并尝试清理构建客户端应用程序,则会失败。虽然构建失败,但是/ builds / foo / bar / build目录被创建并填充,这意味着所有后续构建和清理都会成功。
知道如何解决这个问题吗?
答案 0 :(得分:0)
通常Xcode 4正确处理依赖项目的构建;但我发现它没有的情况。您可以尝试编辑该方案并使静态库依赖项显式化。