libxml / tree.hそのようなファイルまたはディレクトリはありません


100

次のエラーが発生します。

libxml / tree.hそのようなファイルまたはディレクトリはありません

私はすでにlibxml2.dylibプロジェクトに追加していますが、この種の問題が発生しています。私を助けてください。


2
すでにプロジェクトに追加していると言ったとき、正確にはどうしましたか?XCodeが機能したとは思いません。
Devin Ceartas

1
あなたはXCodeの4.6でこの問題を持っている場合はここに行くstackoverflow.com/questions/14622684/...
ボリスGafurov

スクリーンショットを更新します。
ユーザー

回答:


213

こちらの「プロジェクトファイルの設定」の指示に従ってください。

プロジェクトファイルの設定

libxml2.dylibをプロジェクトに追加する必要があります(フレームワークセクションに配置しないでください)。Macでは、それを見つけることができ/usr/lib/libxml2.dylib、iPhoneでは、/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib バージョンが必要になります 。

libxml2は.dylib(わかりやすい.frameworkではない)であるため、もう1つやることがあります。プロジェクトのビルド設定(プロジェクト->プロジェクト設定の編集->ビルド)に移動して、「検索パス」を見つけます。「ヘッダー検索パス」に次のパスを追加します。

$(SDKROOT)/usr/include/libxml2

OPの回答もご覧ください。


12
ヘッダー検索パスに「/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2」を追加するように求められたときに、そのように言わないでください。代わりに「/ usr / include / libxml2を追加します。これにより、プロジェクトが特定のSDKから独立します
。– cdespinosa

これは、実際にへのシンボリックリンクがある限り機能し/usr/includeます。libxml2をインストールしていないため、デフォルトの動作を確認できません。しかし、そうです、そのようにリンクする方がはるかに良いです。
マットボール

1
XCodeで開発する場合、GCCはSDKのルートを再配置する-isysrootオプションを使用します。ヘッダー検索パスに/ usr / include / libxml2を追加すると、コンパイル時に現在のSDK内のusr / include / libxml2フォルダーに変換されます。
Laurent Etiemble 2010

この "$(SDKROOT)/ usr / include / libxml2"をヘッダー検索パス(XCode 4.2)に設定すると、 "" _OBJC_METACLASS _ $ _ UIResponder "が次のように参照されます:MyDemoAppDelegate.o ld:シンボルの(s)アーキテクチャi386の場合は見つかりません。私に何ができる?
NicTesla 2012

1
すごい。ありがとう。問題を引き起こす '$(SDKROOT)'がありませんでした。

86

Xcode 4.3 / 5/6でのlibxml2の追加

libxml2を追加することは、お尻に大きな、太った、厄介な苦痛です。それを行うつもりなら、プロジェクトの構築に行き過ぎる前に行ってください。


次の2つの方法で追加する必要があります

1.ターゲット設定

(プロジェクトではなく)ターゲットをクリックして、を選択しますBuild Phases

というタイトルの三角形をクリックしLink Binary With Librariesます。をクリックして+ライブラリを追加します。

リストの一番下までスクロールして、を選択しますlibxml2.dylib。これにより、プロジェクトにlibxml2ライブラリが追加されます。

2.プロジェクト設定

次に、プロジェクトをどこに探すかをあと3回プロジェクトに通知する必要があります。

を選択し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

最後の2つのケースでは、デバッグリリースにパスが入力されていることを確認してください。

3.きれいにする

Productメニューの下でを選択しますClean

次に、私があなただった場合(それに直面すると、おそらく私はそうです)、Xcodeを終了して立ち去ります。戻ってきて起動したら、準備完了です。


おかげで、これは私にとってXcode 4.3.3で機能した唯一のソリューションでした
lifjoy

1
これらのステップバイステップの手順は、私(Xcode 4.4.1)で機能する唯一の方法でした。ありがとう!
フランク

Xcode 4.1.1でフレームワーク検索パスを設定せずに私のために働きました
Richard Garside

1
opening import file 'Swift.swift': Not a directoryXcode 5でこれを行った後
ユーザー

1
「モジュール 'Swift'のインポートファイルを開く:ディレクトリではありません」というエラーも表示されました。これを修正するには、「フレームワーク検索パス」に「/usr/lib/libxml2.dylib」を追加しないでください。私はそのステップを無視した後も私のために働いた。
ダニエルライアン

22

Xcode 6の場合、次のことを行う必要がありました。

1)「libxml2.dylib」ライブラリをプロジェクトのターゲットに追加します(ビルドフェーズ->ライブラリとバイナリをリンク)

2)TARGETのヘッダー検索パスに「$(SDKROOT)/ usr / include / libxml2」を追加します(ビルド設定->ヘッダー検索パス)

この後、ターゲットは正常にビルドされます。


プロジェクト設定の/ usr / include / libxml2が機能しない理由は何ですか?
Paul Brewczynski、2015


11

@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ではない)であるため、もう1つやることがあります。プロジェクトのビルド設定(Project->Edit Project Settings->Build)に移動し、「Search Paths」を見つけます。「ヘッダー検索パス」で、Macに次のパスを追加します。

 /usr/include/libxml2 

11

Ray Wenderlichが、この問題を解決するgdataの使用に関するブログ投稿を公開しています。基本的にこれらの簡単なステップ:

XCodeで、Project \ Edit Project Settingsをクリックし、「All Configurations」がチェックされていることを確認します。

Search Paths \ Header Search Paths設定を見つけ、/ usr / include / libxml2をリストに追加します。

最後に、Linking \ Other Linker Flagsセクションを見つけて、リストに-lxml2を追加します。

元の投稿:gdataxmlを使用したxmlドキュメントの読み取りと書き込み


2
この答えは多くの場所で見つかりましたが、すべてが、ターゲットではなくプロジェクトのヘッダー検索パスであることを忘れていました。正しく説明してくれてありがとう。
esbenr 2011

7

同じことがわかったので、最新のXcode(4.3.x)に$(SDKROOT)/ usr / include / libxml2を追加する必要がありました。また、何時間も私を取り巻いていたのは、「PROJECT」ではなく「TARGET」を変更していたという事実です(Xcodeの新しいUIは非常に複雑なので、見落としがちです)。プロジェクトを変更する必要があります!


5

別のソリューション。ヘッダー検索パスなどのすべての手順を実行し、プロジェクト設定でプロジェクトで選択した構成が正しいことを確認してください。プロジェクトのビルド設定をダブルクリックすると、ディストリビューション設定で変更されている可能性がありますが、「デバッグ」設定でヘッダー検索パスを追加しようとしています。したがって、正しい設定になっていることを確認してください。またはすべての設定を選択


4

xCode 4.3.2では、単に/ usr / include / libxml2ではなく$(SDKROOT)/ usr / include / libxml2をヘッダー検索フィールドに入力する必要があることがわかりました


4

Mavericks(OS X 10.9)以降、/ usr / includeディレクトリはなくなりました。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を配置することを確認してください
Josh Bernfeld

3

違いはわかりませんが、プロジェクトとターゲットにインクルードパスを追加します。


3

マウンテンライオンで同じ問題に直面/usr/include/libxml2していました。フラグ「再帰的」のパスを含めるように追加することで解決しました。上記のすべてが有効でない場合は、これを使用してください。


2

Snow LeopardとXCode 3.2にアップグレードした後、プロジェクト(LeopardのXCode 3.somethingで開発されたもの)を再度開いたときに、この問題が発生しました。不思議なことに、それはいくつかの種類のビルドにのみ影響しました(エミュレーターのビルドはうまくいきましたが、デバイスのビルドはエラーを出しました)。また、/ usr / includeにlibxml2があり、実際にはlibxml / tree.hが含まれています。

魔法の「クリーン」でも機能しませんでした、「XCode」メニュー(「Appleロゴ」と「ファイル」の間)の「キャッシュを空にする...」でうまくいきました(そのメニューは以前のバージョンにありましたか?)。私には理由はありませんが、クリーン後はlibxml / tree.hに関する苦情はありませんでした


2

また、「常にユーザーパスを検索する」をYESに選択します。XCode 4.3.3では、デフォルトでNO


2

次の手順に従ってください

  1. libxml2の追加
    libxml2.dylibは、Macマシンの/usr/lib/libxml2.dylibにあります。

  2. 「ヘッダー検索パス」の変更
    [左側のパネルにある[プロジェクト名]をクリックします->プロジェクト->ビルド設定->すべて選択(デフォルトは基本)
    検索ボックスにヘッダー検索パスを入力ヘッダー検索パスを
    ダブルクリック-> +- > "$(SDKROOT)/ usr / include / libxml2"

  3. 「その他のリンカーフラグ」に-lxml2を追加します。「その他のリンカーフラグ」を
    検索し
    ます。ステップ2で「その他のリンカーフラグ」行をクリックして検索します。「+」をクリックして、「-lxml2」をリストに追加します。

  4. プロジェクトの種類をARCに変更します->いいえ、つまり自動参照カウントを[いいえ]に変更します。手順2でARCを検索できます


2

Xcode 4.5私はCWのソリューションを完全に使用しました。唯一の例外は、$(SDKROOT)/ usr / include / libxml2が機能せず 、プロジェクトヘッダーの検索パスユーザーヘッダーの検索パスに「$(SDK_DIR)」/ usr / include / libxml2を追加する必要があったことです。その後、プロジェクトは正常にビルドされます。

編集:私のプロジェクト(MyProjectと呼ばれます)内にGoogle GDataプロジェクトがあります(私のプロジェクトで使用しています)。GDataにはlibxmlが必要です。プロジェクトMyProjectを正常にビルドするには、「$(SDK_DIR)」/ usr / include / libxml2をMyProjectのヘッダー検索パスに追加し、GDataのヘッダー検索パスには追加 しません。MyProjectに追加しなかった場合、プロジェクトはビルドされませんでした)。



1

Xcode 4.3.xでのlibxml2の追加

libxml2を追加することは、お尻に大きな、太った、厄介な苦痛です。プロジェクトを構築するのがやりすぎになる前に、それを行う場合はそれを行ってください。

方法は次のとおりです。

ターゲット設定

(プロジェクトではなく)ターゲットをクリックして、「ビルドフェーズ」を選択します。「Link Binary With Libraries」というタイトルの三角形をクリックします。「+」をクリックしてライブラリを追加します。リストの一番下までスクロールして、「libxml2.dylib」を選択します。これでlibxml2ライブラリ2がプロジェクトに追加されますが、お待ちください。

プロジェクト設定

次に、プロジェクトをどこに探すかをあと3回プロジェクトに通知する必要があります。

「ビルド設定」タブを選択します。[リンク]セクションまでスクロールします。プロジェクトの列の下にある[Other Linker Flags]行をダブルクリックします。「+」をクリックして、「-lxml2」をリストに追加します。

更なる。

同じタブで、[検索パス]セクションまでスクロールします。「Framework Search Paths」行のプロジェクトの列の下に「/usr/lib/libxml2.dylib」を追加します。

「ヘッダー検索パス」および「ユーザーヘッダー検索パス」行に「$(SDKROOT)/ usr / include / libxml2」を追加します。最後の2つのケースでは、デバッグとリリースにパスが入力されていることを確認してください。

その後。[製品]メニューで[クリーン]を選択します。

これは動作しており、Xcode5でも動作します!ありがとうございました!


1
これはXcode 5.0.2では機能しません。プロジェクトに上記の変更を加えましたが、うまくいきませんでした。何をする必要があるかを教えてください。
ガネーシュ2014年

1

libxml2.dylibをframeworksフォルダーの下に置かないでください。ルートのすぐ下のルートの下に置きます(左上の青いアイコン)

次に、プロジェクト(TOP左の青いアイコン)をクリックし、ビルド設定に移動します。検索ボックスに「ヘッダー検索パス」と入力し、この「$(SDKROOT)/ usr / include / libxml2」を追加します。

このコードは私の問題を解決し、それがこれを修正するのに役立つことを願っています


1

@Aqib Mumtaz-上記の「Xcode 4.3 / 5/6でのlibxml2の追加」というParrisのメモの指示に従って、動作させました。フレームワーク検索パスを使用するステップは機能せず、コンパイラーは不平を言います。とにかくあのフェラに大きな称賛を!

Xcode 6.2b3を使用しています

使用しているXcodeのバージョンに関係なく、バグがあります。コンパイルエラーが本物であると常に想定しないでください。ヘッダー検索パスをたどらず、明確にリストされたインクルードが見つからないことがよくあります。さらに悪いことに、結果として生じるエラーは別の方向を指す傾向があるため、気を散らすために多くの時間を無駄にします。とは言うものの...

これから始めることで赤ちゃんのステップをお勧めします...:

  1. 「ベンチテスト」と呼ばれる単一のウィンドウのMac OS X Cocoaプロジェクトを作成します
  2. XpathQueryをFinderのプロジェクトソースディレクトリに直接追加する
  3. プロジェクトウィンドウの赤い閉じるボタンの下にある小さなフォルダーアイコンをクリックします。
  4. XpathQuery(含まれている場合はフォルダー)をプロジェクトウィンドウの表示の左側にあるプロジェクトアセットにドラッグします。
  5. /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylibを下部のプロジェクトアセットにドラッグします。これにより、「ビルドフェーズ」->「ライブラリとバイナリをリンク」に簡単に追加できます
  6. 左上のプロジェクトアセット列にある「ベンチテスト」プロジェクトアイコンをクリックします。
  7. 「ビルド設定」で「その他のリンカーフラグ」を検索します
  8. 「Bench Test」プロジェクトアイコン列の下の「Other Linker Flags」に「-lxml2」(sans「」)を追加します
  9. 「ビルド設定」で「ヘッダー検索」を検索
  10. 「Bench Test」プロジェクトアイコン列の下の「Header Search Paths」に「$(SDKROOT)/ usr / include / libxml2」(sans「」)を追加します
  11. "$(SDKROOT)/ usr / include / libxml2"(sans "")を[Bench Test]プロジェクトアイコン列の下の[User Header Search Paths]に追加します

ノート:

  • 「ヘッダー検索パス」と「ユーザーヘッダー検索パス」の両方にその検索パスを追加するまで、鉱山は機能しませんでした。
  • ファインダーでlibxml2.2.dylibにアクセスするには、Xcodeアイコンを右クリックして、[パッケージの連絡先を表示]を選択する必要があります(編集:何というハック..すべてのゴミをアプリに詰め込んでいます)。
  • リンクされたlibxml2.2.dylibを変更する準備をしてください。1 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アプリと言って、医療記録システムへのSOAPベースのインターフェースである「MDWS」または「VIA」と呼ばれるものに対して取り組んでいます...連絡してください


0

Xcode 8.0 +単体テストプロジェクトで3つのステップで解決しました

1)ビルドフェーズにlibxmlファイルを追加しました。このリンクをたどってください

2)その他のリンカーフラグ-ObjC(プロジェクトとテストプロジェクトの両方のターゲットに)追加しました

3)ヘッダー検索パス"${SDKROOT}/usr/include/libxml2"(どちらかの側の二重引用符を忘れないでください)に設定しました(プロジェクトとテストプロジェクトの両方のターゲットに対して)

それらの1つは問題を解決します。そうでない場合は、上記の3つすべてを適用する必要があります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.