libxml / tree.h tidak ada file atau direktori seperti itu


100

Saya mendapatkan kesalahan berikut.

libxml / tree.h tidak ada file atau direktori seperti itu

Saya telah menambahkan libxml2.dylibke proyek saya, namun saya mendapatkan masalah jenis ini. Tolong bantu aku.


2
Ketika Anda mengatakan Anda telah menambahkannya ke proyek Anda, apa sebenarnya yang Anda lakukan? Saya tidak berpikir Xcode berpikir itu berhasil.
Devin Ceartas

1
jika Anda memiliki masalah ini di XCode 4.6 buka di sini stackoverflow.com/questions/14622684/…
Boris Gafurov

Perbarui tangkapan layar Anda.
Pengguna

Jawaban:


213

Ikuti petunjuk di sini , di bawah "Menyiapkan file proyek Anda".

Menyiapkan file proyek Anda

Anda perlu menambahkan libxml2.dylib ke proyek Anda (jangan letakkan di bagian Frameworks). Di Mac, Anda akan menemukannya di /usr/lib/libxml2.dylibdan untuk iPhone, Anda akan menginginkan file /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib versinya.

Karena libxml2 adalah .dylib (bukan .framework ramah yang bagus), kita masih memiliki satu hal lagi yang harus dilakukan. Pergi ke Proyek membangun pengaturan (Proyek-> Edit Pengaturan Proyek-> Bangun) dan temukan "Jalur Pencarian". Di "Header Search Paths" tambahkan jalur berikut:

$(SDKROOT)/usr/include/libxml2

Lihat juga jawaban OP .


12
Jangan lakukan apa yang dikatakan saat meminta Anda untuk menambahkan "/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2" ke Jalur Pencarian Header. Tambahkan "/ usr / include / libxml2 sebagai gantinya. Itu membuat proyek Anda tidak bergantung pada SDK tertentu.
cdespinosa

Itu berfungsi asalkan ada symlink ke dalamnya /usr/include. Saya belum mencoba menginstal libxml2 jadi saya tidak dapat memastikan perilaku default. Tapi ya, jauh lebih baik menghubungkannya seperti itu.
Matt Ball

1
Saat mengembangkan di bawah XCode, GCC menggunakan opsi -isysroot yang merelokasi root SDK. Jika Anda menambahkan / usr / include / libxml2 di jalur pencarian header, ini akan diterjemahkan pada saat kompilasi ke folder usr / include / libxml2 DI DALAM SDK saat ini.
Laurent Etiemble

Ketika saya menyetel "$ (SDKROOT) / usr / include / libxml2" ini ke Jalur Pencarian Header (XCode 4.2), kemudian dikatakan bahwa "" _OBJC_METACLASS _ $ _ UIResponder ", dirujuk dari: _OBJC_METACLASS _ $ _ D2GAppDelegasikan di MyDemoAppDelegate.o ldemoAppDelegate.o (s) tidak ditemukan untuk arsitektur i386 ". Apa yang dapat saya?
NicTesla

1
Bagus. Terima kasih. saya kehilangan '$ (SDKROOT)' yang membuat masalah.

86

Menambahkan libxml2 di Xcode 4.3 / 5/6

Menambahkan libxml2 adalah rasa sakit yang besar, gemuk, dan rewel di pantat. Jika Anda akan melakukannya, lakukan sebelum Anda terlalu jauh membangun proyek Anda.


Anda perlu menambahkannya dengan dua cara :

1. Pengaturan target

Klik pada target Anda (bukan proyek Anda) dan pilih Build Phases .

Klik pada segitiga pengungkapan yang berjudul Link Binary With Libraries. Klik pada+ untuk menambahkan perpustakaan.

Gulir ke bawah daftar dan pilih libxml2.dylib . Itu menambahkan pustaka libxml2 ke proyek Anda.

2. Pengaturan proyek

Sekarang Anda harus memberi tahu proyek Anda di mana mencarinya tiga kali lagi.

Pilih Build Settings tab.

Gulir ke bawah ke Linkingbagian tersebut. Di bawah kolom proyek Anda, klik dua kali pada Other Linker Flagsbaris tersebut. Klik +dan tambahkan -lxml2ke daftar.

Masih lebih.

Di tab yang sama, gulir ke bawah ke Search Paths bagian tersebut.

Di bawah kolom proyek Anda di Framework Search Pathsbaris tambahkan/usr/lib/libxml2.dylib .

Dalam Header Search Paths dan yang User Header Search Pathsadd baris$(SDKROOT)/usr/include/libxml2 .

Dalam dua kasus terakhir tersebut, pastikan bahwa jalur dimasukkan di Debug dan Rilis.

3. Bersih

Di bawah Productmenu pilihClean .

Kemudian, jika saya menjadi Anda (dan hadapi saja, saya mungkin) saya akan keluar dari Xcode dan pergi. Saat Anda kembali dan meluncurkan, sebaiknya Anda pergi.


Terima kasih, ini adalah satu-satunya solusi yang berhasil untuk saya dengan Xcode 4.3.3
selamat menikmati

1
Petunjuk langkah demi langkah ini adalah satu-satunya yang berhasil untuk saya (Xcode 4.4.1). Terima kasih!
Frank

Bekerja untuk saya tanpa menyetel jalur pencarian Kerangka di Xcode 4.1.1
Richard Garside

1
opening import file 'Swift.swift': Not a directorysetelah melakukan ini di Xcode 5.
Pengguna

1
Saya juga mendapat kesalahan "membuka file impor untuk modul 'Swift': Bukan direktori". Untuk memperbaikinya, jangan tambahkan "/usr/lib/libxml2.dylib" ke "Framework Search Paths". Masih berhasil untuk saya setelah saya mengabaikan langkah itu.
Daniel Ryan

22

Untuk Xcode 6, saya harus melakukan hal berikut:

1) tambahkan pustaka "libxml2.dylib" ke TARGET proyek saya (Tahap Pembuatan -> Tautkan Biner Dengan Pustaka)

2) tambahkan "$ (SDKROOT) / usr / include / libxml2" ke Jalur Pencarian Header pada TARGET (Pengaturan Bangun -> Jalur Pencarian Header)

Setelah ini, target harus berhasil dibangun.


Ada alasan mengapa / usr / include / libxml2 pada pengaturan Proyek TIDAK berfungsi?
Paul Brewczynski


11

Bentuk tautan @Matt Ball,

Menurut saya, mengikuti membantu saya.

Anda perlu menambahkan libxml2.dylib ke proyek Anda (jangan letakkan di bagian Frameworks). Di Mac, Anda akan menemukannya di /usr/lib/libxml2.dylibdan untuk iPhone, Anda akan menginginkan file/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylib versinya.

Karena libxml2 adalah .dylib (bukan .framework ramah yang bagus), kita masih memiliki satu hal lagi yang harus dilakukan. Pergi ke pengaturan proyek membangun ( Project->Edit Project Settings->Build) dan temukan " Search Paths". Di "Jalur Pencarian Header" tambahkan jalur berikut di Mac:

 /usr/include/libxml2 

11

Ray Wenderlich memiliki entri blog tentang penggunaan gdata yang memecahkan masalah ini. Pada dasarnya langkah-langkah sederhana ini:

Di XCode, klik Project \ Edit Project Settings dan pastikan "All Configurations" dicentang.

Temukan pengaturan Jalur Pencarian \ Header Jalur Pencarian dan tambahkan / usr / include / libxml2 ke daftar.

Terakhir, temukan bagian Linking \ Other Linker Flags dan tambahkan -lxml2 ke daftar.

posting asli: membaca dan menulis dokumen xml dengan gdataxml


2
Menemukan jawaban ini di banyak tempat, tetapi semuanya lupa menyebutkan bahwa itu adalah jalur pencarian Header pada proyek, bukan sesuai target. Terima kasih banyak telah menjelaskannya dengan benar.
esbenr

7

Saya menemukan hal yang sama, saya harus menambahkan $ (SDKROOT) / usr / include / libxml2 untuk Xcode terbaru (4.3.x). JUGA, yang membuat saya berputar-putar selama berjam-jam adalah kenyataan bahwa saya memodifikasi "TARGET" dan bukan "PROJECT" (UI baru Xcode sangat rumit sehingga mudah untuk mengabaikannya). Anda perlu memodifikasi PROYEK!


5

Solusi lain. lakukan semua langkah di jalur pencarian tajuk, dll. dan pastikan konfigurasi yang Anda pilih dalam proyek di pengaturan Proyek sudah benar. Ketika Anda mengklik dua kali pada pengaturan pembangunan proyek, Anda mungkin mengubah dalam pengaturan Distribusi, Tapi Anda mencoba untuk menambahkan jalur pencarian tajuk dalam pengaturan "Debug". Jadi pastikan Anda berada dalam pengaturan yang benar. atau pilih semua pengaturan


4

Saya menemukan bahwa dengan xCode 4.3.2 saya harus memasukkan $ (SDKROOT) / usr / include / libxml2 ke dalam bidang Pencarian Header daripada hanya / usr / include / libxml2


4

Pada Mavericks (OS X 10.9), direktori / usr / include sudah tidak ada . Separuh dari jawaban di sini sudah usang, karena aplikasi tidak akan dikompilasi sampai Anda memilah direktori include.

Saya memecahkan masalah membuat tautan simbolis ke MacOSX SDK di terminal, menggunakan perintah berikut:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include

Aplikasi sekarang dikompilasi lagi.


Persis apa yang saya cari. Ini bekerja dengan sempurna. Pastikan di jalur pencarian header Anda, Anda meletakkan / usr / include / libxml2
Josh Bernfeld

3

Saya tidak yakin apa perbedaannya tetapi tambahkan jalur penyertaan ke proyek serta target.


3

Di Mountain Lion saya menghadapi masalah yang sama, yang diselesaikan dengan menambahkan /usr/include/libxml2path dengan bendera "rekursif", gunakan ini jika semua di atas tidak membuahkan hasil.


2

Saya mengalami masalah ini ketika saya membuka kembali sebuah proyek (yang dikembangkan di XCode 3.ssesuatu di Leopard) setelah memutakhirkan ke Snow Leopard dan XCode 3.2. Cukup penasaran, ini hanya memengaruhi beberapa jenis build (build emulator berjalan dengan baik, build perangkat memberi saya error). Dan saya memiliki libxml2 di / usr / include, dan itu memang berisi libxml / tree.h.

Bahkan keajaiban "Clean" tidak berhasil, tetapi "Empty Caches ..." di bawah menu "XCode" (antara logo Apple dan File) melakukan triknya (apakah menu itu ada di versi sebelumnya?). Mengalahkan saya alasannya, tetapi setelah bersih tidak ada lagi keluhan mengenai libxml / tree.h


2

Pilih juga "Selalu Cari Jalur Pengguna" untuk YES. Dalam XCode 4.3.3 secara default TIDAK


2

Ikuti langkah-langkah berikut ini

  1. Menambahkan libxml2
    libxml2.dylib dapat ditemukan di mesin mac Anda di /usr/lib/libxml2.dylib

  2. Ubah "Jalur Pencarian Header"
    Klik [Nama Proyek] (di panel kiri) -> Proyek -> Pengaturan Bangun -> Pilih Semua (default adalah Dasar)
    Ketik Jalur Pencarian Header di kotak pencarian
    Klik dua kali pada Jalur Pencarian Header -> + - > "$ (SDKROOT) / usr / include / libxml2"

  3. Tambahkan -lxml2 ke "Tanda penaut lain"
    Cari "Tanda Penaut Lain" sebagai pencarian di langkah 2,
    klik baris "Tanda Penaut Lain". Klik "+" dan tambahkan "-lxml2" ke daftar.

  4. Ubah jenis proyek Anda ke ARC -> Tidak, yaitu Penghitungan Referensi Otomatis ke Tidak. Anda dapat mencari ARC sesuai langkah 2


2

Xcode 4.5 Saya telah menggunakan solusi The CW sepenuhnya. Satu-satunya pengecualian adalah bahwa $ (SDKROOT) / usr / include / libxml2 tidak berfungsi untuk saya, dan saya harus menambahkan "$ (SDK_DIR)" / usr / include / libxml2 ke Jalur Pencarian Header Proyek dan Jalur Pencarian Header Pengguna . Setelah itu proyek berhasil dibangun.

EDIT: Saya memiliki proyek Google GData di dalam proyek saya (disebut Proyek Saya) (proyek saya menggunakan). GData membutuhkan libxml. Untuk membangun proyek MyProject dengan sukses, saya menambahkan "$ (SDK_DIR)" / usr / include / libxml2 ke Header Search Paths of MyProject dan no ke Header Search Paths of GData . Jika saya tidak menambahkannya ke MyProject, proyek tidak dibangun ).



1

Blockquote Menambahkan libxml2 di Xcode 4.3.x

Menambahkan libxml2 adalah rasa sakit yang besar, gemuk, dan rewel di pantat. Jika Anda akan melakukannya, lakukan sebelum Anda terlalu jauh membangun proyek Anda.

Begini caranya.

Pengaturan target

Klik pada target Anda (bukan proyek Anda) dan pilih "Build Phases". Klik pada segitiga terbuka berjudul "Link Binary With Libraries". Klik pada "+" untuk menambahkan perpustakaan. Gulir ke bagian bawah daftar dan pilih "libxml2.dylib". Itu menambahkan libxml2 library 2 proyek Anda… tapi tunggu.

Pengaturan proyek

Sekarang Anda harus memberi tahu proyek Anda di mana mencarinya tiga kali lagi.

Pilih "tab Build Settings". Gulir ke bawah ke bagian "Menautkan". Di bawah kolom proyek Anda, klik dua kali pada baris "Bendera Penghubung Lainnya". Klik "+" dan tambahkan "-lxml2" ke daftar.

Masih lebih.

Di tab yang sama, gulir ke bawah ke bagian "Jalur Penelusuran". Di bawah kolom proyek Anda di baris "Framework Search Paths" tambahkan "/usr/lib/libxml2.dylib".

Dalam "Jalur Pencarian Header" DAN baris "Jalur Pencarian Header Pengguna" tambahkan "$ (SDKROOT) / usr / include / libxml2". Dalam dua kasus terakhir tersebut, pastikan bahwa jalur dimasukkan dalam Debug DAN Rilis.

Kemudian. Di bawah Menu "Produk" pilih "Bersihkan".

Ini berfungsi dan untuk Xcode5 juga! Terima kasih!


1
Ini tidak berfungsi di Xcode 5.0.2. Saya membuat perubahan di atas pada proyek saya, tetapi tidak berhasil. Bisakah Anda membantu saya apa yang perlu dilakukan.
Ganesh

1

Jangan letakkan libxml2.dylib di bawah folder frameworks, letakkan di bawah root tepat di bawah root (ikon biru kiri atas)

Kemudian Klik pada Proyek (TOP Kiri biru ikon), Pergi ke Build Settings, di kotak pencarian ketik "Header Search Paths" dan kemudian tambahkan ini "$ (SDKROOT) / usr / include / libxml2"

Kode ini menyelesaikan masalah saya, semoga dapat membantu Anda memperbaikinya


1

@Aqib Mumtaz - Saya membuatnya berfungsi dengan mengikuti petunjuk di catatan Parris di atas yang berjudul "Menambahkan libxml2 di Xcode 4.3 / 5/6". Langkah dalam menggunakan Framework Search Path tidak berhasil dan compiler mengeluh. Pujian besar untuk orang itu!

Saya menggunakan Xcode 6.2b3

Terlepas dari versi Xcode yang Anda gunakan, ini bermasalah. Jangan selalu menganggap bahwa kesalahan kompilasi itu nyata. Ada banyak kali ketika tidak mengikuti jalur pencarian header dan termasuk yang tercantum dengan jelas tidak ditemukan. Lebih buruk lagi, kesalahan yang dihasilkan cenderung mengarahkan Anda ke arah yang berbeda sehingga Anda membuang banyak waktu untuk memikirkan gangguan. Dengan mengatakan itu ...

Rekomendasikan langkah-langkah kecil dengan memulai dengan ini dengan tepat ...:

  1. buat satu jendela proyek Mac OS X Cocoa yang disebut "Bench Test"
  2. tambahkan XpathQuery ke direktori sumber proyek Anda langsung di Finder
  3. klik ikon folder kecil di bawah tombol tutup merah jendela proyek
  4. seret XpathQuery (folder jika Anda memuatnya) ke dalam aset proyek di sebelah kiri tampilan jendela proyek
  5. seret /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib ke dalam aset proyek Anda, di bagian bawah. Ini akan menambahkannya ke "Build Phases" -> "Link Binary With Libraries" dengan cara yang mudah
  6. klik ikon proyek "Bench Test" di kolom aset proyek, di kiri atas
  7. cari "Bendera Linker Lain" di bawah "Pengaturan Bangun"
  8. tambahkan "-lxml2" (sans "") ke "Other Linker Flags" di bawah kolom ikon proyek "Bench Test"
  9. cari "pencarian header" di bawah "Build Settings"
  10. tambahkan "$ (SDKROOT) / usr / include / libxml2" (sans "") ke "Header Search Paths" di bawah kolom ikon proyek "Bench Test"
  11. tambahkan "$ (SDKROOT) / usr / include / libxml2" (sans "") ke "User Header Search Paths" di bawah kolom ikon proyek "Bench Test"

Catatan:

  • Milik saya tidak akan berfungsi sampai saya menambahkan jalur pencarian itu ke "Jalur Pencarian Header" dan "Jalur Pencarian Header Pengguna".
  • Untuk masuk ke libxml2.2.dylib di finder, Anda perlu mengklik kanan ikon Xcode Anda dan memilih "Show Package Contacts" (editorial: what a hack .. memasukkan semua sampah itu ke dalam aplikasi)
  • Bersiaplah untuk mengubah libxml2.2.dylib tertaut. Yang ada di dalam Xcode sengaja digunakan untuk memastikan bahwa Xcode mendapatkan sesuatu yang diketahuinya dan secara teori telah diuji. Anda mungkin ingin menggunakan dylib di sistem nanti (baca di utas ini)
  • Karena saya menggunakan Xcode 6.2b3, saya mungkin memiliki libxml2.2.dylib yang lebih baru. Nama Anda mungkin sedikit berbeda. Cukup cari folder untuk sesuatu yang dimulai dengan "libxml" dan diakhiri dengan ".dylib" dan seharusnya begitu. Mungkin juga ada alias seperti "libxml2.dylib". Jangan langsung menggunakannya karena menyelesaikan alias menambahkan variabel lain ke dalam persamaan Xcode "apa yang bisa memiliki bug".
  • Demi kewarasan, saya membuat alias dari perpustakaan eksternal, mengganti namanya untuk menunjukkan yang mana, dan menyimpannya pada tingkat yang sama dengan file proyek di Finder. Jika mereka mengubah lokasi, mengubah nama, dll, alias akan ada di Get Info itu, jalur lengkap file asli untuk pekerjaan detektif nanti untuk mendapatkan proyek menyusun dan menautkan lagi. (symlink terlalu mudah rusak dan tidak wajar di Mac)
  • Hal terakhir, dan sangat penting, lihat http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html di mana Anda dapat mendownload XpathQuery dan mendapatkan lebih banyak kebaikan.

semoga ini membantu.

Jika Anda kebetulan mengembangkan sesuatu untuk Veteran, katakanlah aplikasi iPhone / iPad atau Mac, dan sedang mengerjakan sesuatu yang disebut "MDWS" atau "VIA" yang merupakan antarmuka berbasis SOAP ke sistem rekam medis ... silakan hubungi saya


0

Saya menyelesaikan dalam tiga langkah di Xcode 8.0 + Proyek Uji Unit

1) Saya menambahkan file libxml ke Build Phases. Ikuti tautan ini

2) Saya menambahkan Bendera Linker Lainnya sebagai-ObjC (Untuk proyek dan target proyek uji)

3) Saya menyiapkan Jalur Pencarian Header sebagai"${SDKROOT}/usr/include/libxml2" (Jangan lupa tanda kutip ganda di kedua sisi) (Untuk target proyek dan proyek uji)

Salah satunya akan menyelesaikan masalah. Jika tidak, Anda harus menerapkan ketiga cara di atas.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.