【发布时间】:2012-03-02 21:41:42
【问题描述】:
所以这是独家新闻:
我有一个构建标准库的 xcode 项目。这个标准库生成一个“.a”文件,以及一些需要对使用该库的客户端可见的头文件。
标准库构建到一个设置目录:
/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 目录会被创建并填充,这意味着所有后续构建和清理都会成功。
知道如何解决这个问题吗?
【问题讨论】:
-
失败信息到底是什么?
-
词法或预处理器问题:找不到“head1.h”文件。所以很明显,这个检查阶段是在编译直接依赖项之前发生的......否则,这不会是一个问题。
-
不,直接依赖必须在任何检查发生之前准备好,检查你是否没有弄错here。
-
没有错误设置标题搜索路径 - 不过还是谢谢。
标签: ios xcode header-files