libxml / tree.h nie ma takiego pliku lub katalogu


100

Otrzymuję następujące błędy.

libxml / tree.h nie ma takiego pliku lub katalogu

Dodałem już libxml2.dylibdo mojego projektu, ale mam tego typu problemy. Proszę pomóż mi.


2
Kiedy mówisz, że już dodałeś to do swojego projektu, co dokładnie zrobiłeś? Nie sądzę, że XCode uważa, że ​​to zadziałało.
Devin Ceartas

1
jeśli masz ten problem w XCode 4.6, przejdź tutaj stackoverflow.com/questions/14622684/ ...
Boris Gafurov,

Zaktualizuj zrzut ekranu.
Użytkownik

Odpowiedzi:


214

Postępuj zgodnie ze wskazówkami tutaj , pod „Konfigurowanie pliku projektu.”

Konfigurowanie pliku projektu

Musisz dodać libxml2.dylib do swojego projektu (nie umieszczaj go w sekcji Frameworks). Na Macu znajdziesz go na /usr/lib/libxml2.dylibiPhonie, a będziesz chciał mieć /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib wersję.

Ponieważ libxml2 jest .dylib (nie jest przyjaznym, przyjaznym .frameworkem), wciąż mamy jeszcze jedną rzecz do zrobienia. Przejdź do ustawień kompilacji projektu (Projekt-> Edytuj ustawienia projektu-> Kompilacja) i znajdź „Ścieżki wyszukiwania”. W polu „Ścieżki wyszukiwania nagłówków” dodaj następującą ścieżkę:

$(SDKROOT)/usr/include/libxml2

Zobacz także odpowiedź OP .


12
Nie rób tego, co mówi, gdy prosi o dodanie „/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2” do ścieżki wyszukiwania nagłówka. Zamiast tego dodaj „/ usr / include / libxml2. Dzięki temu Twój projekt będzie niezależny od określonych zestawów SDK.
cdespinosa

Działa to tak długo, jak długo jest do niego dowiązanie symboliczne /usr/include. Nie próbowałem instalować libxml2, więc nie mogę potwierdzić domyślnego zachowania. Ale tak, znacznie lepiej jest połączyć to w ten sposób.
Matt Ball,

1
Podczas programowania pod XCode, GCC używa opcji -isysroot, która przenosi katalog główny SDK. Jeśli dodasz / usr / include / libxml2 do ścieżek wyszukiwania nagłówka, zostanie on przetłumaczony w czasie kompilacji do folderu usr / include / libxml2 WEWNĄTRZ bieżącego zestawu SDK.
Laurent Etiemble,

Kiedy ustawię to "$ (SDKROOT) / usr / include / libxml2" na ścieżkę wyszukiwania nagłówka (XCode 4.2), to mówi, że "" _OBJC_METACLASS _ $ _ UIResponder ", do którego odwołuje się: _OBJC_METACLASS _ $ _ D2GAppDelegate w MyDemo.appdelegate: (s) nie znaleziono dla architektury i386 ”. Co mogę zrobić?
NicTesla

1
Wspaniały. dzięki. Brakowało mi „$ (SDKROOT)”, co powodowało problemy.

86

Dodanie libxml2 w Xcode 4.3 / 5/6

Dodanie libxml2 to duży, gruby, wybredny ból w dupie. Jeśli masz zamiar to zrobić, zrób to, zanim zajdziesz za daleko w budowaniu swojego projektu.


Musisz go dodać na dwa sposoby :

1. Ustawienia docelowe

Kliknij swój cel (nie projekt) i wybierz Build Phases.

Kliknij trójkąt odkrywający zatytułowany Link Binary With Libraries. Kliknij, +aby dodać bibliotekę.

Przewiń na dół listy i wybierz libxml2.dylib. To dodaje bibliotekę libxml2 do twojego projektu.

2. Ustawienia projektu

Teraz musisz jeszcze trzy razy powiedzieć swojemu projektowi, gdzie go szukać .

Wybierz plik Build Settings tab.

Przewiń w dół do Linkingsekcji. Pod kolumnami projektów kliknij dwukrotnie Other Linker Flagswiersz. Kliknij +i dodaj -lxml2do listy.

Wciąż więcej.

Na tej samej karcie przewiń w dół do Search Pathssekcji.

Pod kolumną projektów w Framework Search Pathswierszu dodaj /usr/lib/libxml2.dylib.

W Header Search Paths i na User Header Search PathsDodaj wiersz $(SDKROOT)/usr/include/libxml2.

W tych dwóch ostatnich przypadkach upewnij się, że ścieżka jest wprowadzona w debugowaniu i wydaniu.

3. Wyczyść

W Productmenu wybierz Clean.

Wtedy, gdybym był tobą (i spójrzmy prawdzie w oczy, prawdopodobnie jestem) rzuciłbym Xcode i odszedł. Kiedy wrócisz i uruchomisz, powinieneś być gotowy.


Dzięki, to było jedyne rozwiązanie, które działało dla mnie z Xcode 4.3.3
lifjoy

1
Te instrukcje krok po kroku były jedynymi, które działały dla mnie (Xcode 4.4.1). Dzięki!
Frank

Pracował dla mnie bez ustawiania ścieżek wyszukiwania Framework w Xcode 4.1.1
Richard Garside

1
opening import file 'Swift.swift': Not a directorypo zrobieniu tego w Xcode 5.
Użytkownik

1
Pojawił się również błąd „otwieranie pliku importu dla modułu„ Swift ”: To nie jest katalog”. Aby to naprawić, po prostu nie dodawaj „/usr/lib/libxml2.dylib” do „Framework Search Paths”. Nadal pracował dla mnie po zignorowaniu tego kroku.
Daniel Ryan

22

W przypadku Xcode 6 musiałem wykonać następujące czynności:

1) dodaj bibliotekę „libxml2.dylib” do CELU mojego projektu (Fazy kompilacji -> Połącz plik binarny z bibliotekami)

2) dodaj „$ (SDKROOT) / usr / include / libxml2” do ścieżek wyszukiwania nagłówków w TARGET (Ustawienia kompilacji -> Ścieżki wyszukiwania nagłówków)

Następnie cel powinien pomyślnie się zbudować.


Jest jakiś powód, dla którego / usr / include / libxml2 w ustawieniach projektu NIE działa?
Paul Brewczyński


11

Utwórz link @Matt Ball,

Zauważyłem, że poniższe wskazówki są dla mnie pomocne.

Musisz dodać libxml2.dylib do swojego projektu (nie umieszczaj go w sekcji Frameworks). Na Macu znajdziesz go na /usr/lib/libxml2.dylibiPhonie, a będziesz chciał mieć /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylibwersję.

Ponieważ libxml2 jest .dylib (nie jest przyjaznym, przyjaznym .frameworkem), wciąż mamy jeszcze jedną rzecz do zrobienia. Przejdź do ustawień kompilacji projektu ( Project->Edit Project Settings->Build) i znajdź „ Search Paths”. W polu „Ścieżki wyszukiwania nagłówków” dodaj następującą ścieżkę na komputerze Mac:

 /usr/include/libxml2 

11

Ray Wenderlich opublikował post na blogu o używaniu gdata, który rozwiązuje ten problem. Zasadniczo te proste kroki:

W XCode kliknij Project \ Edit Project Settings i upewnij się, że zaznaczone są „All Configurations”.

Znajdź ustawienie Search Paths \ Header Search Paths i dodaj / usr / include / libxml2 do listy.

Na koniec znajdź sekcję Linking \ Other Linker Flags i dodaj -lxml2 do listy.

oryginalny post: czytaj i pisz dokumenty xml za pomocą gdataxml


2
Znalazłem tę odpowiedź w wielu miejscach, ale wszyscy zapomnieli wspomnieć, że jest to ścieżka wyszukiwania nagłówka w projekcie, a nie na celu. Wielkie dzięki za prawidłowe wyjaśnienie.
esbenr

7

Znalazłem to samo, musiałem dodać $ (SDKROOT) / usr / include / libxml2 dla najnowszego Xcode (4.3.x). TAKŻE to, co sprawiło, że krążyłem w kółko godzinami, to fakt, że modyfikowałem „TARGET”, a nie „PROJEKT” (nowy interfejs użytkownika Xcode jest tak zawiły, że łatwo go przeoczyć). Musisz zmodyfikować PROJEKT!


5

Inne rozwiązanie. wykonaj wszystkie kroki w ścieżce wyszukiwania nagłówka itp. i upewnij się, że wybrana konfiguracja w projekcie w ustawieniach projektu jest poprawna. Po dwukrotnym kliknięciu ustawień kompilacji projektu możesz zmieniać ustawienia dystrybucji, ale próbujesz dodać ścieżkę wyszukiwania nagłówka w ustawieniach „Debuguj”. Więc upewnij się, że masz prawidłowe ustawienia. lub wybierz wszystkie ustawienia


4

Zauważyłem, że z xCode 4.3.2 musiałem wpisać $ (SDKROOT) / usr / include / libxml2 w polu wyszukiwania nagłówka zamiast po prostu / usr / include / libxml2


4

W Mavericks (OS X 10.9) katalog / usr / include zniknął . Połowa odpowiedzi jest nieaktualna, ponieważ aplikacja nie będzie się kompilować, dopóki nie uporządkujesz katalogu dołączania.

Rozwiązałem problem tworząc dowiązanie symboliczne do MacOSX SDK w terminalu, używając następującego polecenia:

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

Aplikacja jest teraz ponownie kompilowana.


Dokładnie to, czego szukałem. To działa idealnie. Po prostu upewnij się, że w ścieżkach wyszukiwania nagłówka umieszczasz / usr / include / libxml2
Josh Bernfeld,

3

Nie jestem pewien, na czym polega różnica, ale dodaj ścieżkę dołączania do projektu, a także cel.


3

W Mountain Lion miałem ten sam problem, który został rozwiązany poprzez dodanie /usr/include/libxml2do uwzględnienia ścieżek z flagą „rekurencyjna”, użyj tego, jeśli wszystko powyżej nie jest owocne.


2

Miałem ten problem, kiedy ponownie otworzyłem projekt (który został opracowany w XCode 3. coś w systemie Leopard) po aktualizacji do Snow Leopard i XCode 3.2. Co ciekawe, wpłynęło to tylko na niektóre rodzaje kompilacji (kompilacje emulatorów poszły dobrze, w przypadku urządzeń wystąpił błąd). Mam bibliotekę libxml2 w / usr / include i rzeczywiście zawiera libxml / tree.h.

Nawet magiczne „Wyczyść” nie zadziałało, ale „Opróżnij pamięci podręczne…” w menu „XCode” (między logo Apple a plikiem) załatwiło sprawę (czy to menu było w poprzednich wersjach?). Nie wiem dlaczego, ale po wyczyszczeniu nie było więcej skarg dotyczących libxml / tree.h


2

Wybierz także „Zawsze wyszukuj ścieżki użytkownika” na TAK. W XCode 4.3.3 jest to domyślnie NIE


2

Wykonaj poniższe czynności

  1. Dodanie libxml2
    libxml2.dylib można znaleźć na komputerze Mac pod adresem /usr/lib/libxml2.dylib

  2. Zmień "Ścieżki wyszukiwania nagłówków"
    Kliknij [Nazwa projektu] (w lewym panelu) -> Projekt -> Ustawienia kompilacji -> Zaznacz wszystko (domyślnie jest to Podstawowe)
    Wpisz Ścieżki wyszukiwania nagłówka w polu wyszukiwania
    Kliknij dwukrotnie na Ścieżki wyszukiwania nagłówka -> + - > „$ (SDKROOT) / usr / include / libxml2”

  3. Dodaj -lxml2 do „Innej flagi konsolidatora”
    Wyszukaj „Inne flagi konsolidatora ” podczas wyszukiwania w kroku 2,
    klikając wiersz „Inne flagi konsolidatora ”. Kliknij „+” i dodaj „-lxml2” do listy.

  4. Zmień typ projektu na ARC -> Nie, tj. Automatyczne liczenie referencji na Nie Możesz przeszukać ARC zgodnie z krokiem 2


2

Xcode 4.5 Całkowicie wykorzystałem rozwiązanie CW. Jedynym wyjątkiem jest to, że $ (SDKROOT) / usr / include / libxml2 nie działało dla mnie i musiałem dodać „$ (SDK_DIR)” / usr / include / libxml2 do moich ścieżek wyszukiwania nagłówków projektów i ścieżek wyszukiwania nagłówków użytkowników . Po pomyślnym zbudowaniu projektu.

EDYCJA: Mam projekt Google GData w moim projekcie (o nazwie MyProject) (mój projekt używa). GData wymaga biblioteki libxml. Aby pomyślnie zbudować projekt MyProject, dodaję "$ (SDK_DIR)" / usr / include / libxml2 do Header Search Paths of MyProject i no do Header Search Paths of GData . Jeśli nie dodałem go do MyProject, projekt nie został skompilowany ).



1

Cytat blokowy Dodawanie libxml2 w Xcode 4.3.x

Dodanie libxml2 to duży, gruby, wybredny ból w dupie. Jeśli masz zamiar to zrobić, zrób to, zanim zajdziesz za daleko w budowaniu swojego projektu.

Oto jak.

Ustawienia docelowe

Kliknij swój cel (nie projekt) i wybierz „Fazy budowy”. Kliknij trójkąt odsłaniający zatytułowany „Połącz plik binarny z bibliotekami”. Kliknij „+”, aby dodać bibliotekę. Przewiń w dół listy i wybierz „libxml2.dylib”. To dodaje bibliotekę libxml2 2 do twojego projektu… ale czekaj.

Ustawienia projektu

Teraz musisz jeszcze trzy razy powiedzieć swojemu projektowi, gdzie go szukać.

Wybierz kartę „Ustawienia kompilacji”. Przewiń w dół do sekcji „Łączenie”. Pod kolumnami projektu kliknij dwukrotnie wiersz „Inne flagi łączące”. Kliknij „+” i dodaj „-lxml2” do listy.

Wciąż więcej.

Na tej samej karcie przewiń w dół do sekcji „Ścieżki wyszukiwania”. W kolumnie projektu w wierszu „Framework Search Paths” dodaj „/usr/lib/libxml2.dylib”.

W wierszu „Ścieżki wyszukiwania nagłówków” ORAZ „Ścieżki wyszukiwania nagłówków użytkownika” dodaj „$ (SDKROOT) / usr / include / libxml2”. W tych dwóch ostatnich przypadkach upewnij się, że ścieżka została wprowadzona w polu Debuguj ORAZ Wydanie.

Następnie. W menu „Produkt” wybierz „Wyczyść”.

To działa i dla Xcode5 też! Dziękuję Ci!


1
To nie działa w Xcode 5.0.2. Dokonałem powyższych zmian w moim projekcie, ale bez powodzenia. Czy możesz mi pomóc, co należy zrobić.
Ganesh,

1

Nie umieszczaj libxml2.dylib w folderze frameworków, umieść go w katalogu głównym tuż poniżej katalogu głównego (lewa górna niebieska ikona)

Następnie kliknij projekt (górna lewa niebieska ikona), przejdź do ustawień kompilacji, w polu wyszukiwania wpisz „Ścieżki wyszukiwania nagłówka”, a następnie dodaj to „$ (SDKROOT) / usr / include / libxml2”

Ten kod rozwiązuje mój problem, mam nadzieję, że pomoże ci to naprawić


1

@Aqib Mumtaz - uruchomiłem go, postępując zgodnie z instrukcjami zawartymi w powyższej notatce Parrisa zatytułowanej „Dodawanie libxml2 w Xcode 4.3 / 5/6”. Etap korzystania ze ścieżki wyszukiwania struktury nie działa, a kompilator narzeka. I tak wielkie brawa dla tego gościa!

Używam Xcode 6.2b3

Niezależnie od używanej wersji Xcode jest błędny. Nie zawsze zakładaj, że błędy kompilacji są prawdziwe. Często zdarza się, że nie podąża za ścieżkami wyszukiwania nagłówka i zawiera wyraźnie wymienione, nie znaleziono. Co gorsza, błędy, które wynikają z tego powodu, kierują Cię w różnych kierunkach, więc tracisz dużo czasu na rozpraszanie się. Powiedziawszy to ...

Polecaj kroki dla niemowląt, zaczynając od tego dokładnie ...:

  1. utwórz projekt w jednym oknie Mac OS X Cocoa o nazwie „Bench Test”
  2. dodaj XpathQuery do katalogu źródłowego projektu bezpośrednio w Finderze
  3. kliknij małą ikonę folderu pod czerwonym przyciskiem zamykania okna projektu
  4. przeciągnij XpathQuery (folder, jeśli go zawarłeś) do zasobów projektu po lewej stronie ekranu okna projektu
  5. przeciągnij /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib do zasobów projektu u dołu. Spowoduje to dodanie go w łatwy sposób do „Fazy budowania” -> „Połącz plik binarny z bibliotekami”
  6. kliknij ikonę projektu „Bench Test” w kolumnie zasobów projektu w lewym górnym rogu
  7. wyszukaj „Inne flagi konsolidatora” w sekcji „Ustawienia kompilacji”
  8. dodaj „-lxml2” (sans „”) do „Other Linker Flags” w kolumnie ikony projektu „Bench Test”
  9. wyszukaj „wyszukiwanie nagłówka” w „Ustawieniach kompilacji”
  10. dodaj „$ (SDKROOT) / usr / include / libxml2” (sans „”) do „Header Search Paths” w kolumnie „Bench Test” z ikoną projektu
  11. dodaj „$ (SDKROOT) / usr / include / libxml2” (sans „”) do „User Header Search Paths” w kolumnie „Bench Test” z ikoną projektu

Uwagi:

  • Mój nie działałby, dopóki nie dodałem tej ścieżki wyszukiwania zarówno do „Ścieżek wyszukiwania nagłówków”, jak i „Ścieżek wyszukiwania nagłówków użytkownika”.
  • Aby dostać się do libxml2.2.dylib w wyszukiwarce, musisz kliknąć prawym przyciskiem myszy ikonę Xcode i wybrać „Pokaż kontakty pakietu” (artykuł redakcyjny: co za włamanie… wepchanie wszystkich tych śmieci do aplikacji)
  • Przygotuj się na zmianę połączonego libxml2.2.dylib. Ten wewnątrz Xcode jest celowo używany, aby zapewnić, że Xcode uzyska coś, o czym wie i teoretycznie został przetestowany. Możesz później użyć dylib w systemie (przeczytaj w tym wątku)
  • Ponieważ używam Xcode 6.2b3, mogę mieć nowszą bibliotekę libxml2.2.dylib. Twój mógłby być nieco inny. Po prostu wyszukaj w folderze coś, co zaczyna się od „libxml” i kończy na „.dylib” i to powinno być to. Może istnieć również alias, taki jak „libxml2.dylib”. Nie używaj tego od razu, ponieważ rozwiązanie aliasu dodaje kolejną zmienną do równania Xcode "co może mieć błędy".
  • Ze względów rozsądku tworzę aliasy bibliotek zewnętrznych, zmieniam ich nazwy, aby wskazać, które to są, i utrzymuję je na tym samym poziomie, co plik projektu w Finderze. Jeśli zmienią lokalizację, nazwę itp., Alias ​​będzie zawierał w polu Pobierz informacje, pełną ścieżkę do oryginalnego pliku do późniejszej pracy detektywa, aby ponownie skompilować i połączyć projekt. (linki symboliczne pękają zbyt łatwo i nie są naturalne dla komputerów Mac)
  • Ostatnia rzecz i bardzo ważna, zobacz http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html, gdzie możesz pobrać XpathQuery i uzyskać więcej dobroci.

mam nadzieję że to pomoże.

Jeśli tak się składa, że ​​tworzysz coś dla weteranów, powiedzmy, aplikację na iPhone'a / iPada lub Maca i pracujesz nad czymś o nazwie "MDWS" lub "VIA", które są interfejsami opartymi na SOAP do systemu dokumentacji medycznej ... proszę o kontakt


0

Rozwiązałem w trzech krokach w projekcie testu jednostkowego Xcode 8.0 +

1) Dodałem plik libxml do Build Phases. Postępuj zgodnie z tym linkiem

2) Dodałem inne flagi konsolidatora jako -ObjC(dla celów projektu i projektu testowego)

3) Ustawiam ścieżkę wyszukiwania nagłówka jako "${SDKROOT}/usr/include/libxml2"(Nie zapomnij o podwójnym cudzysłowie po obu stronach) (dla celów projektu i projektu testowego)

Jeden z nich rozwiąże problem. Jeśli nie, musisz zastosować wszystkie trzy z powyższych.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.