iOS版 - 包括在其他Xcode项目静态库项目...头发出

问题描述:

因此,这里的勺子:iOS版 - 包括在其他Xcode项目静态库项目...头发出

我有建立一个标准库的Xcode项目。这个标准库产生一个“.a”文件,以及一些头文件,这些头文件对于使用所述lib的任何客户端来说都需要是可见的。

的标准库建立一组目录:

/builds/foo/bar/build/ 

它看起来像这样在我建库:

/builds/foo/bar/build/ 
    lib.a 
    headers/ 
     head1.h 
     head2.h 
     head3.h 

我有一个需要消耗该库中的客户端应用程序。我需要重新构建客户端应用程序的每个版本的标准库,所以我按如下方式设置它:

我创建了一个客户端应用程序,将标准lib .xcodeproj文件添加到它,并将其作为直接依赖。我在“Link Binary with Library”一节中适当地链接了它。然后,按照标准的西装,我把它的客户端应用程序来搜索在以下位置的头文件:

/builds/foo/bar/build/headers/ 

而这个工程...排序的。如果我删除上面列出的目录并尝试重建,它将失败,因为它无法找到头文件。

“好的,杜!你删除了包含头文件的目录!”。

确实,但客户端构建的方式是在客户端应用程序构建之前将静态库编译并放置在/ builds/foo/bar/build目录(包括头文件)中。它应该找到这些头文件。它们在客户端编译之前就已经存在,而'Header Search Path'正确设置。

正如我之前所说,如果我删除包含lib和头文件的目录,并尝试客户端应用程序的一个干净的版本,它会失败。虽然构建失败,但/ builds/foo/bar/build目录被创建并填充,这意味着所有后续构建和清除都会成功。

任何想法如何解决这个问题?

+0

故障信息究竟是什么? – lawicko 2012-03-02 23:04:00

+0

词法或预处理器问题:找不到“head1.h”文件。 显然,这个检查阶段是在编译直接依赖关系之前发生的......否则,这不是问题。 – Jeff 2012-03-02 23:33:45

+0

那么,直接依赖关系**必须在任何检查发生之前做好准备,检查一下你是否犯了错误[这里](http://stackoverflow.com/questions/3429031/header-search-paths-vs-用户报头搜索路径功能于xcode的)。 – lawicko 2012-03-03 09:43:12

通常Xcode 4会正确处理依赖项目的构建;但我发现情况并非如此。您可以尝试编辑该方案并明确静态库依赖关系。