libxml/tree.h 没有这样的文件或目录
Posted
技术标签:
【中文标题】libxml/tree.h 没有这样的文件或目录【英文标题】:libxml/tree.h no such file or directory 【发布时间】:2009-09-15 18:19:12 【问题描述】:我收到以下错误。
我已经在我的项目中添加了libxml2.dylib
,但是我遇到了这种类型的麻烦。
请帮帮我。
【问题讨论】:
当你说你已经将它添加到你的项目中时,你到底做了什么?我不认为 XCode 认为它有效。 如果您在 XCode 4.6 中遇到此问题,请转到此处***.com/questions/14622684/… 更新你的截图。 【参考方案1】:按照“设置项目文件”下的指示 here。
设置您的项目文件
您需要将 libxml2.dylib 添加到您的项目中(不要放在框架部分)。在 Mac 上, 您可以在
/usr/lib/libxml2.dylib
找到它,对于 iPhone,您将 想要/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib
版本。由于 libxml2 是一个 .dylib(不是一个友好的 .framework),我们仍然 还有一件事要做。转到项目构建设置 (项目->编辑项目设置->构建)并找到“搜索路径”。 在“标题搜索路径”中添加以下路径:
$(SDKROOT)/usr/include/libxml2
另见the OP's answer。
【讨论】:
当它要求您将“/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2”添加到标头时,不要执行该操作搜索路径。添加 "/usr/include/libxml2 代替。这使您的项目独立于特定的 SDK。 只要在/usr/include
中实际上有一个符号链接就可以了。我没有尝试安装 libxml2,所以我无法确认默认行为。但是,是的,以这种方式链接它会更好。
在 XCode 下开发时,GCC 使用 -isysroot 选项重新定位 SDK 的根目录。如果在头文件搜索路径中添加 /usr/include/libxml2,它将在编译时被翻译到当前 SDK 内的 usr/include/libxml2 文件夹。
当我将这个“$(SDKROOT)/usr/include/libxml2”设置为标题搜索路径(XCode 4.2)时,它说“_OBJC_METACLASS_$_UIResponder”,引用自:_OBJC_METACLASS_$ MyDemoAppDelegate.o ld 中的 _D2GAppDelegate:未找到架构 i386 的符号”。我能做什么?
太棒了。谢谢。我错过了造成问题的“$(SDKROOT)”。【参考方案2】:
在 Xcode 4.3 / 5 / 6 中添加 libxml2
添加 libxml2 是一个巨大的、肥胖的、挑剔的痛苦。如果您打算这样做,请在构建项目之前完成。
你需要通过两种方式添加它:
1。目标设置
点击您的目标(不是您的项目)并选择Build Phases
。
点击标题为Link Binary With Libraries
的显示三角形。点击+
添加库。
滚动到列表底部并选择libxml2.dylib
。这会将 libxml2 库添加到您的项目中。
2。项目设置
现在你必须告诉你的项目在哪里寻找它三次次。
选择Build Settings tab
。
向下滚动到Linking
部分。
在您的项目列下双击Other Linker Flags
行。
单击+
并将-lxml2
添加到列表中。
还有更多。
在同一选项卡中,向下滚动到 Search Paths
部分。
在Framework Search Paths
行的您的项目列下添加/usr/lib/libxml2.dylib
。
在Header Search Paths
和User Header Search Paths
行中添加$(SDKROOT)/usr/include/libxml2
。
在最后两种情况下,请确保在调试和发布中输入路径。
3。清洁
在Product
菜单下选择Clean
。
然后,如果我是你(让我们面对现实,我可能是)我会退出 Xcode 并走开。当您回来并启动时,您应该一切顺利。
【讨论】:
谢谢,这是唯一适用于 Xcode 4.3.3 的解决方案 这些分步说明是唯一对我有用的一次(Xcode 4.4.1)。谢谢! 为我工作而无需在 Xcode 4.1.1 中设置框架搜索路径opening import file 'Swift.swift': Not a directory
在 Xcode 5 中执行此操作后。
我还收到错误“打开模块'Swift'的导入文件:不是目录”。要解决此问题,请不要将“/usr/lib/libxml2.dylib”添加到“框架搜索路径”。在我忽略了这一步之后仍然为我工作。【参考方案3】:
对于 Xcode 6,我必须执行以下操作:
1) 将“libxml2.dylib”库添加到我项目的 TARGET(构建阶段 -> 将二进制文件与库链接)
2) 将“$(SDKROOT)/usr/include/libxml2”添加到 TARGET 上的 Header Search Paths(构建设置 -> Header Search Paths)
在此之后,目标应该会成功构建。
【讨论】:
项目设置上的 /usr/include/libxml2 不起作用的任何原因?【参考方案4】:您还需要将/usr/include/libxml2
添加到您的包含路径中。
【讨论】:
【参考方案5】:形成@Matt Ball的链接,
我发现以下内容对我很有帮助。
您需要将 libxml2.dylib 添加到您的项目中(不要放在框架部分)。在 Mac 上,您可以在 /usr/lib/libxml2.dylib
找到它,而对于 iPhone,您需要 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylib
版本。
由于 libxml2 是一个 .dylib(不是一个友好的 .framework),我们还有一件事要做。转到项目构建设置 (Project->Edit Project Settings->Build
) 并找到“Search Paths
”。在 Mac 上的“Header Search Paths”中添加以下路径:
/usr/include/libxml2
【讨论】:
【参考方案6】:Ray Wenderlich 有一篇关于使用 gdata 解决此问题的博文。基本上这些简单的步骤:
在 XCode 中,单击 Project\Edit Project Settings 并确保选中“All Configurations”。
找到 Search Paths\Header Search Paths 设置并将 /usr/include/libxml2 添加到列表中。
最后,找到 Linking\Other Linker Flags 部分并将 -lxml2 添加到列表中。
原帖:read and write xml documents with gdataxml
【讨论】:
在很多地方都找到了这个答案,但是都忘了说是项目上的Header搜索路径,不是目标上的。非常感谢您的正确解释。【参考方案7】:我发现了同样的情况,我必须为最新的 Xcode (4.3.x) 添加 $(SDKROOT)/usr/include/libxml2。此外,让我转了几个小时的原因是我正在修改“TARGET”而不是“PROJECT”(Xcode 的新 UI 非常复杂,很容易忽略这一点)。您需要修改 PROJECT!
【讨论】:
【参考方案8】:另一种解决方案。执行标题搜索路径等中的所有步骤,并确保您在项目设置中的项目中选择的配置是正确的。当您双击项目构建设置时,您可能正在更改分发设置,但您正在尝试在“调试”设置中添加标题搜索路径。因此,请确保您的设置正确。或选择所有设置
【讨论】:
【参考方案9】:我发现使用 xCode 4.3.2 我必须输入 $(SDKROOT)/usr/include/libxml2 进入标题搜索字段而不是简单地 /usr/include/libxml2
【讨论】:
【参考方案10】:从 Mavericks (OS X 10.9) 开始,/usr/include 目录消失了。这里有一半的答案已经过时,因为在您整理好包含目录之前,应用程序不会编译。
我使用以下命令解决了在终端中创建指向 MacOSX SDK 的符号链接的问题:
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
应用程序现在再次编译。
【讨论】:
正是我想要的。这很完美。只需确保在标题搜索路径中放置 /usr/include/libxml2【参考方案11】:我不确定有什么区别,但将包含路径添加到项目以及目标。
【讨论】:
【参考方案12】:在 Mountain Lion 上,我遇到了同样的问题,通过添加 /usr/include/libxml2
以包含带有“递归”标志的路径,如果以上所有方法都没有结果,请使用它。
【讨论】:
【参考方案13】:我在升级到 Snow Leopard 和 XCode 3.2 后重新打开一个项目(在 XCode 3.something on Leopard 上开发)时遇到了这个问题。很好奇,它只影响了某些类型的构建(模拟器构建很好,设备给了我错误)。我在 /usr/include 有 libxml2,它确实包含 libxml/tree.h。
即使魔法“清理”也不起作用,但是“XCode”菜单下的“空缓存...”(在 Apple 徽标和文件之间)起到了作用(那个菜单在那里在以前的版本中?)。击败我的原因,但在清理之后没有更多关于 libxml/tree.h 的投诉
【讨论】:
【参考方案14】:同时选择“始终搜索用户路径”为“是”。在 XCode 4.3.3 中默认为 NO
【讨论】:
【参考方案15】:请按照以下步骤操作
添加 libxml2 libxml2.dylib 可以在你的机器上找到 /usr/lib/libxml2.dylib
更改“标题搜索路径” 单击 [项目名称](在左侧面板中)-> 项目 -> 构建设置 -> 全选(默认为基本) 在搜索框中输入标题搜索路径 双击 Header Search Paths -> + -> "$(SDKROOT)/usr/include/libxml2"
将 -lxml2 添加到“其他链接器标志” 在步骤 2 中搜索“其他链接器标志” 单击“其他链接器标志”行。单击“+”并将“-lxml2”添加到列表中。
将项目类型更改为 ARC -> 否,即自动引用计数更改为否 您可以按照步骤 2 搜索 ARC
【讨论】:
【参考方案16】:Xcode 4.5 我已经完全使用了 CW 的解决方案。 唯一的例外是 $(SDKROOT)/usr/include/libxml2 对我不起作用,我不得不将 "$(SDK_DIR)"/usr/include/libxml2 添加到我的项目中 标题搜索路径和用户标题搜索路径。 在该项目成功构建之后。
编辑:我的项目中有 Google GData 项目(称为 MyProject)(我的项目使用)。 GData 需要 libxml。为了成功构建项目 MyProject,我将 "$(SDK_DIR)"/usr/include/libxml2 添加到 MyProject 的 Header Search Paths 中,而将 no 添加到 GData 的 Header Search Paths 中。如果我没有将它添加到 MyProject,则项目没有构建)。
【讨论】:
【参考方案17】:我发现this visual tutorial 很有用。
【讨论】:
【参考方案18】:块引用 在 Xcode 4.3.x 中添加 libxml2
添加 libxml2 是一个巨大的、肥胖的、挑剔的痛苦。如果您打算这样做,请在构建项目之前完成它。
方法如下。
目标设置
单击您的目标(不是您的项目)并选择“构建阶段”。单击标题为“Link Binary With Libraries”的显示三角形。单击“+”以添加库。滚动到列表底部并选择“libxml2.dylib”。这会将 libxml2 库 2 添加到您的项目中……但请稍等。
项目设置
现在你必须再告诉你的项目在哪里寻找它三遍。
选择“构建设置”选项卡。向下滚动到“链接”部分。在您的项目的列下,双击“Other Linker Flags”行。单击“+”并将“-lxml2”添加到列表中。
还有更多。
在同一选项卡中,向下滚动到“搜索路径”部分。在“框架搜索路径”行中的项目列下添加“/usr/lib/libxml2.dylib”。
在“标头搜索路径”和“用户标头搜索路径”行中添加“$(SDKROOT)/usr/include/libxml2”。在最后两种情况下,请确保在 Debug AND Release 中输入路径。
那么。在“产品”菜单下选择“清洁”。
这对 Xcode5 也有效!谢谢!
【讨论】:
这在 Xcode 5.0.2 中不起作用。我对我的项目进行了上述更改,但没有运气。你能帮我做些什么吗?【参考方案19】:不要将 libxml2.dylib 放在 frameworks 文件夹下,放在根目录下的根目录下(左上角蓝色图标)
然后点击项目(左上角蓝色图标),转到构建设置,在搜索框中输入“标题搜索路径”,然后添加这个“$(SDKROOT)/usr/include/libxml2”
这段代码解决了我的问题,希望它能帮助你解决这个问题
【讨论】:
【参考方案20】:@Aqib Mumtaz - 我按照 Parris 上面题为“在 Xcode 4.3 / 5 / 6 中添加 libxml2”的说明中的说明使其工作。使用框架搜索路径的步骤不起作用,编译器会抱怨。无论如何都要向那个家伙致敬!
我正在使用 Xcode 6.2b3
无论您使用的是什么版本的 Xcode,它都是错误的。不要总是假设编译错误是真实的。很多时候它不遵循标题搜索路径并且未找到明确列出的包含。更糟糕的是,由此产生的错误往往会将您指向不同的方向,因此您会浪费大量时间来分心。话虽如此...
从这个开始推荐婴儿步骤...:
-
创建一个名为“Bench Test”的单窗口 Mac OS X Cocoa 项目
直接在 Finder 中将 XpathQuery 添加到项目源目录中
点击项目窗口红色关闭按钮下的小文件夹图标
将 XpathQuery(如果包含它,则为文件夹)拖到项目窗口显示左侧的项目资产中
将 /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib 拖到您的项目资源中,在底部.这会将它添加到您的“构建阶段”->“将二进制文件与库链接”中
点击左上方项目资产列中的“基准测试”项目图标
在“构建设置”下搜索“其他链接器标志”
在“基准测试”项目图标列下的“其他链接器标志”中添加“-lxml2”(无“”)
在“构建设置”下搜索“标题搜索”
在“Bench Test”项目图标列下的“Header Search Paths”中添加“$(SDKROOT)/usr/include/libxml2”(sans "")
在“Bench Test”项目图标列下的“User Header Search Paths”中添加“$(SDKROOT)/usr/include/libxml2”(sans "")
注意事项:
在我将该搜索路径添加到“标题搜索路径”和“用户标题搜索路径”之前,我的方法无法正常工作。 要在查找器中访问 libxml2.2.dylib,您需要右键单击 Xcode 图标并选择“显示包联系人”(社论:真是个 hack.. 将所有垃圾塞进应用程序)李> 准备更改链接的 libxml2.2.dylib。 Xcode 中的 是有意使用的,以确保 Xcode 得到它知道的东西,并且在理论上已经过测试。您可能希望稍后在系统中使用 dylib(在此线程中阅读) 由于我使用的是 Xcode 6.2b3,我可能有一个更新的 libxml2.2.dylib。您的名称可能略有不同。只需在文件夹中搜索以“libxml”开头并以“.dylib”结尾的内容即可。也可能有一个别名,如“libxml2.dylib”。不要立即使用它,因为解析别名会将另一个变量添加到 Xcode“可能有错误”等式中。 出于理智的考虑,我为外部库设置了别名,重命名它们以指示它们是哪一个,并将它们与 Finder 中的项目文件保持在同一级别。如果他们更改位置、更改名称等,别名将包含在 Get Info 中,即原始文件的完整路径,供以后的侦探工作以再次编译和链接项目。 (符号链接太容易断了,对 Mac 来说不自然) 最后一点,非常重要,请参阅 http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html,您可以在其中下载 XpathQuery 并获得更多好处。希望这会有所帮助。
如果您碰巧正在为退伍军人开发一些东西,比如说 iPhone / iPad 或 Mac 应用程序,并且正在使用一种名为“MDWS”或“VIA”的东西,它们是医疗记录系统的基于 SOAP 的接口......请联系我
【讨论】:
【参考方案21】:我在Xcode 8.0 + 单元测试项目中分三步解决
1) 我将 libxml 文件添加到 Build Phases.follow this link
2) 我将 Other Linker Flags 添加为 -ObjC
(对于项目和测试项目目标)
3) 我将 Header Search Path 设置为 "$SDKROOT/usr/include/libxml2"
(不要忘记在两边加上双引号)(对于项目和测试项目目标)
其中一个将解决问题。如果不是,您必须应用上述所有三个。
【讨论】:
【参考方案22】:我坚持我添加错误,然后我意识到问题是它不支持弧,所以在这里检查支持,救命 -> http://www.michaelbabiy.com/arc-compliant-gdataxml-library/
【讨论】:
以上是关于libxml/tree.h 没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章
UI进阶 XML解析适配 引入GDataXML文件时候 'libxml/tree.h'file not found 错误解决办法
没有这样的文件或目录(public/assets/manifest*)