我已经使用Clint Harris' tutorial在项目之间设置代码共享,一切都在我的计算机上正常运行。但是在我的同事的机器上,似乎编译器在构建时没有从静态库项目中找到头文件。
我的同事通过克隆git存储库来获取我的项目。我们经历了所有相关的构建标志和XCode设置n次,但项目只是拒绝在他的机器上编译。
这就是我要求我的同事做的事情,主要是从教程中复制和粘贴的:
遵循这些步骤,使用静态库的项目应该在他的机器上编译与我的相同。但事实并非如此。基本上,他得到的错误是:
error: TheFrameworkHeader.h: No such file or directory
然后是由缺少的标题引起的一系列其他错误。
任何解决问题的策略?或者任何有类似经历并且可以分享一些来之不易的知识的人?我总结的说明中是否有任何遗漏?在编译静态库时,是否需要在“复制标题”构建阶段设置标题的角色?
答案 0 :(得分:8)
尽管有一些有用的建议,我从来没有想过这个,但这里有一个类似情况的人的一点信息。我通过将原始项目拆分为两个来创建库和依赖项目。起初,库和应用程序只是同一项目中的两个目标。后来,我将应用程序移动到一个单独的项目中。一切似乎都有效,我将两个项目推送到远程git存储库。但是,当这些被克隆到其他计算机上时,找不到库头。
后来,我发现当我在原始计算机上克隆项目时发生了同样的错误。经过多次努力之后,我把它归结为一个可怕的细节:依赖项目文件夹的名称!(即带有应用程序的项目,而不是库。)不是名称的.xcodeproject包,不是应用程序标识符,而是包含文件夹的名称。一改变,一切正常。如果我将其更改回原始名称(在任何计算机上),则再次找不到标题。
如果有人对此有任何见解,请发表回答!
编辑:由于我发布了这个问题,同样的问题出现在另一个项目中,而且只是重命名包含.xcodeproject文件夹的文件夹修复了问题。答案 1 :(得分:2)
我认为不是Git,我认为它是xcode。我在这里遇到了一个非常类似的问题,其中xcode / xcodebuild错误地解析了一个包含路径(使它变得简单。)使用完全相同的库项目和xcconfig文件(从svn repo清理结账)但另一个包含文件夹 - 它可以工作。所以,对于解决方案而言,不要再责怪Git了; - )
答案 2 :(得分:0)
如果您在特定计算机上构建时遇到问题,则问题可能出在机器或用户设置上。例如environment variable(可能是INCLUDE_PATH或其中一个亲戚 - XCode使用GCC)。你可能有一个“。”在其中一个变量中。
解决此问题的最佳方法是在构建脚本中将所需的文件夹路径添加到-I开关。
答案 3 :(得分:0)
我经常忘记检查这个:你确定丢失的文件(即TheFrameWorkHeader.h“在git存储库中吗?可能是你的构建设置是正确的,但文件不知何故没有添加到git正确。
答案 4 :(得分:0)
仔细检查“搜索路径 - >用户标题搜索路径”构建设置(对于所有配置)是否指向包含共享Xcode项目的目录(您可以使用您创建的新源树变量)。