为啥 XCode 4 在构建过程中找不到我的 .h 文件?
Posted
技术标签:
【中文标题】为啥 XCode 4 在构建过程中找不到我的 .h 文件?【英文标题】:Why can't XCode 4 find my .h files during a build?为什么 XCode 4 在构建过程中找不到我的 .h 文件? 【发布时间】:2011-06-08 19:54:18 【问题描述】:我有一个无法构建的项目,因为编译器 (?) 似乎找不到 .h 文件。我尝试使用完整路径、相对路径并设置项目搜索路径(标题和用户标题),但似乎没有任何效果。我觉得很奇怪的是,即使使用完整路径也会出现错误:No such file or directory(该文件确实存在于指定路径中)。
任何人都可以就可能出现的问题提出一些建议吗?我一定会很感激的。
导入语句:
#import <Foundation/Foundation.h>
#import <zxing/common/Counted.h>
#import <zxing/Result.h>
#import <zxing/BinaryBitmap.h>
#import <zxing/Reader.h>
#import <zxing/ResultPointCallback.h>
标题位于:
/Users/rolfmarsh/iPhoneCodeLibrary/BarcodeLibrary/zxing-1.6/cpp/core/src/zxing
标头搜索路径为:
$(inherited)
"$(SRCROOT)/zxing/common"
和
/Users/rolfmarsh/iPhoneCodeLibrary/BarcodeLibrary/zxing-1.6/cpp/core/src
包含文件的完整路径:
/Users/rolfmarsh/iPhoneCodeLibrary/BarcodeLibrary/zxing-1.6/cpp/core/src/zxing/Result.h
【问题讨论】:
请发布相关的include
声明、您的包含路径设置、系统上标头的确切位置。
@Spokane:编辑您的问题,甚至不要尝试在 cmets 中发布代码。
导入语句:#import 我也对 ZXing 的依赖感到相当痛苦。这里有一些提示,希望对遇到类似问题的其他人有所帮助。
这一行做了一个导入:
#import <zxing/common/Counted.h>
为了让编译器找到Counted.h
,必须指定头搜索路径。
现在,因为import
语句将查找Counted.h
相对于两个子文件夹zxing/common
,我们需要给它zxing
的父文件夹。
在这种情况下,父文件夹将类似于:
/ .. my full path here ../cpp/core/src/
所以,在src
目录下,您会找到zxing
。
我们如何在 Xcode 中配置它?最好相对做。否则,项目将在其他用户的计算机上失败。
为此,我们指定一个相对于项目目录的路径。如下:
$(PROJECT_DIR)/../cpp/core/src
这在 ZXingWidget 目标的构建设置的标题搜索路径中。
这个头文件路径的关键是指定要搜索的相对目录。在我们的例子中,我们指定相对于$(PROJECT_DIR)
的搜索。该变量指定了我们的子项目ZXingWidget
的目录。
其他注意事项。请注意在目标的构建设置中指定这些。如果您在项目级别执行此操作,您仍然需要使用 $(inherited)
变量在目标级别指定它。
另外,不要忘记构建脚本非常有用。查看 -I
标志包含的标头路径。
作为一种通用的调试技术,我喜欢在我的设置中指定绝对路径。这提供了一个干净的构建,我知道可以包含这些文件,以及它们肯定在哪里。完成后,我使用$(PROJECT_DIR)
指定相对路径。
【讨论】:
【参考方案2】:我发布这篇文章是为了让像我这样正在将 zxing qr 阅读器集成到他们的项目中的新手变得简单,并关闭与 zxing 集成相关的几个线程。
1。 主要事情 - 绝对确保您拥有最新版本。
http://zxing.googlecode.com/svn/trunk/
[到现在,1 月 18 日,您将不再对 zxing/common/ 文件夹有任何问题。最简单的解决方法:获取最新代码!]
2。 转到 zxing -> iphone -> ZXingWidget。
将 ZXingWidget.xcodeproj 文件拖放到 Xcode 项目的“组和文件”侧边栏的根目录中。
[您现在应该在此处列出 ZXingWidget.xcodeproj,它必须下拉并列出其内容]
3。 在同一个地方,项目导航器,选择:
您的项目文件 -> 目标 -> '您的项目名称' -> 构建阶段 -> 将二进制文件与库链接。
您应该找到一个名为“工作区”的文件夹。从内部添加“libZXingWidget.a”。
4。 仍处于 Build 阶段,展开 Target Dependencies 并添加 ZXingWidget。
5。 选择构建设置并搜索标题搜索路径。 您需要将 2 条记录添加到标题搜索路径。您不需要将值与用户标题搜索路径相关联。您可以通过双击右侧的列来实现此目的。将出现一个小的弹出窗口。使用 + 按钮添加第一条记录。添加:
../zxing/iphone/ZXingWidget/类
现在使用 + 按钮添加第二条记录。添加:
../zxing/cpp/core/src
这些是我使用的值。这些值有效,因为我使用同一个文件夹来托管我的项目和 zxing 文件夹。
[确保正确引用您的文件夹,以防您决定使用不同的文件结构。]
6。 返回 Build Phases 并添加以下所需的 ios 框架:
AV基金会
音频工具箱
核心视频
核心媒体
libiconv
通讯录
地址簿用户界面
7.
创建一组文件 (.h&.m) 并将其 .m 扩展名更改为 .mm
8。 通过在之前创建的文件中包含以下内容来测试集成:
#import <ZXingWidgetController.h>
#import <QRCodeReader.h>
此时,只有在您运行的不是最新版本时,您才会遇到丢失的文件。希望这会有所帮助。
【讨论】:
如果您需要扫描除二维码以外的任何其他内容,我建议您查看 ZXingObjC - 我采用的路径相同。 github.com/TheLevelUp/ZXingObjC 像魅力一样工作!不必依赖于 ZXingWidget 源代码的特定位置会很好。最好单独构建 ZXingWidget,并将必要的头文件和库存档复制到应用程序项目中。【参考方案3】:需要检查的一些事项: - 文件权限 - 你可以使用 xcodebuild 从命令行构建吗?
【讨论】:
我重新开始,新的代码,现在它可以工作了......谢谢你们的建议。我很感激。【参考方案4】:我浏览了许多关于如何解决此问题的博客文章。这对我帮助很大。
http://alwawee.com/wordpress/2011/12/01/zxingwidgetcontroller-h-not-found-zxing-installation-problem-solution/
问题在于没有正确定义标题搜索路径。 所以我...
1) 下载zxing 2.1
2) 从我复制的下载中:iphone、cpp、objc 和自述文件并粘贴到名为“zxing”的文件夹中
3) 我将新文件夹“zxing”添加到我的项目(在我的 Mac 上)而不是 xcode 应用程序。
4) 从创建的文件夹 zxing 我将 zxingwidget.xproje 拖到我的 xcode 项目中
5) 我按照您在所有博客中找到的所有步骤进行操作
解决这个问题的关键
6) 我按照这个步骤处理 xcode 错误https://***.com/a/14703794/1881577
7) 我按照此步骤处理头路径文件错误http://alwawee.com/wordpress/2011/12/01/zxingwidgetcontroller-h-not-found-zxing-installation-problem-solution/
重要提示:我必须按照步骤 7) 执行两次,我必须选择项目目标并分配标题路径,我必须选择项目项目并分配标题路径。
8) 构建 zxingwidget 项目(从方案选择选项)
9) Build 运行项目。
希望这对其他人也有帮助。
【讨论】:
以上是关于为啥 XCode 4 在构建过程中找不到我的 .h 文件?的主要内容,如果未能解决你的问题,请参考以下文章
在 Xcode 8.2.1 中找不到“Cordova/CDV.h”文件