libxml / tree.h nessun file o directory di questo tipo


100

Ricevo i seguenti errori.

libxml / tree.h nessun file o directory di questo tipo

Ho già aggiunto libxml2.dylibal mio progetto, tuttavia sto riscontrando questo tipo di problemi. Mi aiuti per favore.


2
Quando dici di averlo già aggiunto al tuo progetto, cosa hai fatto esattamente? Non credo che XCode pensi che abbia funzionato.
Devin Ceartas

1
se hai questo problema in XCode 4.6 vai qui stackoverflow.com/questions/14622684/…
Boris Gafurov

Aggiorna il tuo screenshot.
Utente

Risposte:


213

Segui le istruzioni qui , in "Configurazione del file di progetto".

Configurazione del file di progetto

Devi aggiungere libxml2.dylib al tuo progetto (non metterlo nella sezione Frameworks). Sul Mac, lo troverai su /usr/lib/libxml2.dylibe per iPhone, ti consigliamo la /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib versione.

Dato che libxml2 è un .dylib (non un bel .framework amichevole) abbiamo ancora un'altra cosa da fare. Vai alle impostazioni di compilazione del progetto (Progetto-> Modifica impostazioni progetto-> Crea) e trova i "Percorsi di ricerca". In "Percorsi di ricerca intestazione" aggiungi il seguente percorso:

$(SDKROOT)/usr/include/libxml2

Vedi anche la risposta dell'OP .


12
Non fare quello che dice quando ti viene chiesto di aggiungere "/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2" al percorso di ricerca dell'intestazione. Aggiungi "/ usr / include / libxml2. Ciò rende il tuo progetto indipendente da SDK specifici.
cdespinosa

Funziona fintanto che c'è effettivamente un collegamento simbolico ad esso in /usr/include. Non ho provato a installare libxml2 quindi non posso confermare il comportamento predefinito. Ma sì, è molto meglio collegarlo in questo modo.
Matt Ball,

1
Quando si sviluppa sotto XCode, GCC utilizza l'opzione -isysroot che riposiziona la radice dell'SDK. Se aggiungi / usr / include / libxml2 nei percorsi di ricerca dell'intestazione, verrà tradotto al momento della compilazione nella cartella usr / include / libxml2 ALL'INTERNO dell'SDK corrente.
Laurent Etiemble

Quando imposto questo "$ (SDKROOT) / usr / include / libxml2" nel percorso di ricerca dell'intestazione (XCode 4.2), viene visualizzato "" _OBJC_METACLASS _ $ _ UIResponder ", a cui fa riferimento: _OBJC_METACLASS _ $ _ D2GAppDelegate in MyDemoAppDelegate. (s) non trovato per l'architettura i386 ". Cosa posso fare?
NicTesla

1
Grande. Grazie. mi mancava "$ (SDKROOT)" che creava problemi.

86

Aggiunta di libxml2 in Xcode 4.3 / 5/6

Aggiungere libxml2 è un grosso, grasso, schizzinoso rompicoglioni. Se hai intenzione di farlo, fallo prima di arrivare troppo lontano nella costruzione del tuo progetto.


Devi aggiungerlo in due modi :

1. Impostazioni target

Fare clic sul target (non sul progetto) e selezionare Build Phases .

Fare clic sul triangolo di rivelazione intitolatoLink Binary With Libraries . Fare clic su +per aggiungere una libreria.

Scorri fino alla fine dell'elenco e seleziona libxml2.dylib . Ciò aggiunge la libreria libxml2 al tuo progetto.

2. Impostazioni del progetto

Ora devi dire al tuo progetto dove cercarlo tre altre volte.

Seleziona il file Build Settings tab.

Scorri verso il basso fino alla Linkingsezione. Sotto le colonne dei tuoi progetti fai doppio clic sulla Other Linker Flagsriga. Fare clic su +e aggiungere -lxml2all'elenco.

Ancora di più.

Nella stessa scheda, scorri verso il basso fino alla Search Pathssezione.

Sotto la colonna dei tuoi progetti nella Framework Search Pathsriga aggiungi /usr/lib/libxml2.dylib.

Nella Header Search Paths e la User Header Search Pathsfila aggiuntivo $(SDKROOT)/usr/include/libxml2.

In questi ultimi due casi, assicurati che il percorso sia inserito in Debug e Release.

3. Pulisci

Sotto il Productmenu selezionare Clean.

Quindi, se fossi in te (e ammettiamolo, probabilmente lo sono) lascerei Xcode e me ne andrei. Quando torni e lanci dovresti essere pronto.


Grazie, questa è stata l'unica soluzione che ha funzionato per me con Xcode 4.3.3
lifjoy

1
Queste istruzioni passo passo sono state le uniche che hanno funzionato per me (Xcode 4.4.1). Grazie!
Frank

Ha funzionato per me senza impostare i percorsi di ricerca del Framework in Xcode 4.1.1
Richard Garside

1
opening import file 'Swift.swift': Not a directorydopo averlo fatto in Xcode 5.
Utente

1
Ho anche ricevuto l'errore "apertura del file di importazione per il modulo" Swift ": non una directory". Per risolvere questo problema, non aggiungere "/usr/lib/libxml2.dylib" a "Framework Search Paths". Ha funzionato ancora per me dopo aver ignorato quel passaggio.
Daniel Ryan

22

Per Xcode 6, ho dovuto fare quanto segue:

1) aggiungi la libreria "libxml2.dylib" al TARGET del mio progetto (Build Phases -> Link Binary With Libraries)

2) aggiungi "$ (SDKROOT) / usr / include / libxml2" ai percorsi di ricerca dell'intestazione su TARGET (Impostazioni di creazione -> Percorsi di ricerca dell'intestazione)

Dopodiché, l'obiettivo dovrebbe essere costruito correttamente.


Qualche motivo per cui / usr / include / libxml2 nelle impostazioni del progetto NON funziona?
Paul Brewczynski


11

Forma il link di @Matt Ball,

Ho trovato utile seguire.

Devi aggiungere libxml2.dylib al tuo progetto (non metterlo nella sezione Frameworks). Sul Mac, lo troverai su /usr/lib/libxml2.dylibe per iPhone, ti consigliamo la /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylibversione.

Dato che libxml2 è un .dylib (non un bel .framework amichevole) abbiamo ancora un'altra cosa da fare. Vai alle impostazioni di creazione del progetto ( Project->Edit Project Settings->Build) e trova " Search Paths". In "Percorsi di ricerca intestazione" aggiungi il seguente percorso sul Mac:

 /usr/include/libxml2 

11

Ray Wenderlich ha un post sul blog sull'utilizzo di gdata che risolve questo problema. Fondamentalmente questi semplici passaggi:

In XCode, fare clic su Progetto \ Modifica impostazioni progetto e assicurarsi che "Tutte le configurazioni" siano selezionate.

Trova l'impostazione Percorsi di ricerca \ Percorsi di ricerca intestazione e aggiungi / usr / include / libxml2 all'elenco.

Infine, trova la sezione Linking \ Other Linker Flags e aggiungi -lxml2 all'elenco.

post originale: leggi e scrivi documenti xml con gdataxml


2
Ho trovato questa risposta in molti punti, ma tutti si sono dimenticati di menzionare che si tratta del percorso di ricerca dell'intestazione sul progetto, non sulla destinazione. Grazie mille per averlo spiegato correttamente.
esbenr

7

Ho trovato lo stesso, ho dovuto aggiungere $ (SDKROOT) / usr / include / libxml2 per l'ultimo Xcode (4.3.x). INOLTRE, ciò che mi ha tenuto in giro per ore è il fatto che stavo modificando il "TARGET" e non il "PROGETTO" (la nuova interfaccia utente di Xcode è così intricata che è facile trascurarla). Devi modificare il PROGETTO!


5

Un'altra soluzione. esegui tutti i passaggi nel percorso di ricerca dell'intestazione ecc. e assicurati che la configurazione selezionata nel progetto nelle impostazioni del progetto sia quella corretta. Quando fai doppio clic sulle impostazioni di creazione del progetto, potresti modificare le impostazioni di distribuzione, ma stai tentando di aggiungere il percorso di ricerca dell'intestazione nelle impostazioni di "Debug". Quindi assicurati di avere le impostazioni corrette. o scegli tutte le impostazioni


4

Ho scoperto che con xCode 4.3.2 dovevo inserire $ (SDKROOT) / usr / include / libxml2 nel campo di ricerca dell'intestazione piuttosto che semplicemente / usr / include / libxml2


4

A partire da Mavericks (OS X 10.9) la directory / usr / include è scomparsa . La metà delle risposte qui sono obsolete, poiché l'applicazione non verrà compilata fino a quando non risolverai la directory include.

Ho risolto il problema creando un collegamento simbolico a MacOSX SDK nel terminale, utilizzando il seguente comando:

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

L'applicazione ora si compila di nuovo.


Esattamente quello che stavo cercando. Funziona perfettamente. Assicurati solo di inserire / usr / include / libxml2 nei percorsi di ricerca dell'intestazione
Josh Bernfeld

3

Non sono sicuro di quale sia la differenza, ma aggiungi il percorso di inclusione al progetto oltre al target.


3

Su Mountain Lion stavo affrontando lo stesso problema, che è stato risolto aggiungendo /usr/include/libxml2per includere percorsi con flag "ricorsivo", usa questo se tutto quanto sopra non è fruttuoso.


2

Ho avuto questo problema quando ho riaperto un progetto (che è stato sviluppato su XCode 3. qualcosa su Leopard) dopo l'aggiornamento a Snow Leopard e XCode 3.2. Abbastanza curioso, ha interessato solo alcuni tipi di build (le build dell'emulatore sono andate bene, quelle del dispositivo mi hanno dato l'errore). E ho libxml2 in / usr / include, e in effetti contiene libxml / tree.h.

Anche la magia "Clean" non ha funzionato, ma "Empty Caches ..." nel menu "XCode" (tra il logo Apple e File) ha funzionato (quel menu era lì nelle versioni precedenti?). Mi batte il motivo, ma dopo una pulizia non ci sono state più lamentele riguardo libxml / tree.h


2

Seleziona anche "Cerca sempre percorsi utente" su SÌ. In XCode 4.3.3 è per impostazione predefinita NO


2

Si prega di seguire i seguenti passaggi

  1. Aggiunta di libxml2
    libxml2.dylib può essere trovato sul tuo computer mac su /usr/lib/libxml2.dylib

  2. Cambia "Percorsi di ricerca intestazione"
    Fai clic su [Nome progetto] (nel pannello di sinistra) -> Progetto -> Impostazioni di costruzione -> Seleziona tutto (l'impostazione predefinita è Base)
    Digita Percorsi di ricerca intestazione nella casella di ricerca Fai
    doppio clic su Percorsi di ricerca intestazione -> + - > "$ (SDKROOT) / usr / include / libxml2"

  3. Aggiungi -lxml2 a "Altro contrassegno linker"
    Cerca "Altri contrassegni linker" come ricerca nel passaggio 2
    fai clic sulla riga "Altri contrassegni linker ". Fare clic su "+" e aggiungere "-lxml2" all'elenco.

  4. Cambia il tuo tipo di progetto in ARC -> No, cioè Conteggio automatico dei riferimenti su No Puoi cercare ARC come nel passaggio 2


2

Xcode 4.5 Ho utilizzato interamente la soluzione di The CW. L'unica eccezione è che $ (SDKROOT) / usr / include / libxml2 non ha funzionato per me e ho dovuto aggiungere "$ (SDK_DIR)" / usr / include / libxml2 ai miei percorsi di ricerca intestazione progetti e percorsi di ricerca intestazione utente . Dopo che il progetto viene compilato con successo.

EDIT: ho un progetto Google GData all'interno del mio progetto (chiamato MyProject) (il mio progetto utilizza). GData richiede libxml. Per costruire con successo il progetto MyProject, aggiungo "$ (SDK_DIR)" / usr / include / libxml2 a Header Search Paths di MyProject e no a Header Search Paths di GData . Se non l'ho aggiunto a MyProject, il progetto non è stato creato ).



1

Blockquote Aggiunta di libxml2 in Xcode 4.3.x

Aggiungere libxml2 è un grosso, grasso, schizzinoso rompicoglioni. Se hai intenzione di farlo, fallo prima di arrivare troppo lontano nella costruzione del tuo progetto.

Ecco come.

Impostazioni di destinazione

Fare clic sul target (non sul progetto) e selezionare "Build Phases". Fare clic sul triangolo di rivelazione intitolato "Collega file binario con librerie". Fare clic sul "+" per aggiungere una libreria. Scorri fino alla fine dell'elenco e seleziona "libxml2.dylib". Questo aggiunge la libreria libxml2 2 al tuo progetto ... ma aspetta.

Impostazioni del progetto

Ora devi dire al tuo progetto dove cercarlo altre tre volte.

Seleziona la "scheda Impostazioni build". Scorri verso il basso fino alla sezione "Collegamento". Sotto le colonne del progetto, fai doppio clic sulla riga "Altri flag del linker". Fare clic su "+" e aggiungere "-lxml2" all'elenco.

Ancora di più.

Nella stessa scheda, scorri verso il basso fino alla sezione "Percorsi di ricerca". Sotto la colonna del tuo progetto nella riga "Framework Search Paths" aggiungi "/usr/lib/libxml2.dylib".

Nella riga "Percorsi di ricerca intestazione" E "Percorsi di ricerca intestazione utente" aggiungi "$ (SDKROOT) / usr / include / libxml2". In questi ultimi due casi assicurati che il percorso sia inserito in Debug AND Release.

Poi. Sotto il menu "Prodotto" seleziona "Pulisci".

Funziona e anche per Xcode5! Grazie!


1
Questo non funziona in Xcode 5.0.2. Ho apportato le modifiche sopra al mio progetto, ma senza fortuna. Puoi aiutarmi a cosa deve essere fatto.
Ganesh

1

Non mettere libxml2.dylib nella cartella frameworks metterlo sotto root appena sotto la root (icona blu in alto a sinistra)

Quindi fare clic sul progetto (icona blu in alto a sinistra), andare su Impostazioni build, nella casella di ricerca digitare "Header Search Paths" e quindi aggiungere "$ (SDKROOT) / usr / include / libxml2"

Questo codice risolve il mio problema, spero che ti aiuti a risolverlo


1

@Aqib Mumtaz - L'ho fatto funzionare seguendo le istruzioni nella nota di Parris sopra intitolata "Aggiunta di libxml2 in Xcode 4.3 / 5/6". Il passaggio nell'utilizzo di un percorso di ricerca del framework non funziona e il compilatore si lamenta. Grandi complimenti a quel tizio comunque!

Sto usando Xcode 6.2b3

Indipendentemente dalla versione di Xcode che stai utilizzando, è bacato. Non dare sempre per scontato che gli errori di compilazione siano reali. Ci sono molte volte in cui non segue i percorsi di ricerca dell'intestazione e include chiaramente elencati non vengono trovati. Peggio ancora, gli errori che ne derivano tendono a indirizzarti in direzioni diverse, quindi perdi molto tempo a trafficare con le distrazioni. Detto questo ...

Consiglia piccoli passi iniziando esattamente con questo ...:

  1. creare un progetto Cocoa per Mac OS X a finestra singola chiamato "Bench Test"
  2. aggiungi XpathQuery nella directory sorgente del progetto direttamente nel Finder
  3. fare clic sulla piccola icona della cartella sotto il pulsante di chiusura rosso della finestra del progetto
  4. trascina XpathQuery (cartella se contenuta) nelle risorse del progetto a sinistra del display della finestra del progetto
  5. trascina /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib nelle risorse del progetto, in basso. Questo lo aggiungerà in "Build Phases" -> "Link Binary With Libraries" nel modo più semplice
  6. fare clic sull'icona del progetto "Bench Test" nella colonna delle risorse del progetto, in alto a sinistra
  7. cerca "Altri flag del linker" in "Impostazioni build"
  8. aggiungi "-lxml2" (sans "") ad "Altri flag del linker" nella colonna dell'icona del progetto "Bench Test"
  9. cerca "ricerca intestazione" in "Impostazioni build"
  10. aggiungi "$ (SDKROOT) / usr / include / libxml2" (sans "") a "Header Search Paths" sotto la colonna dell'icona del progetto "Bench Test"
  11. aggiungi "$ (SDKROOT) / usr / include / libxml2" (sans "") a "Percorsi di ricerca intestazione utente" sotto la colonna dell'icona del progetto "Bench Test"

Appunti:

  • Il mio non avrebbe funzionato fino a quando non avessi aggiunto quel percorso di ricerca sia a "Percorsi di ricerca intestazione" che a "Percorsi di ricerca intestazione utente".
  • Per accedere a libxml2.2.dylib nel Finder, dovrai fare clic con il pulsante destro del mouse sull'icona Xcode e selezionare "Mostra contatti pacchetto" (editoriale: che trucco .. riempire tutta quella spazzatura nell'app)
  • Preparati a cambiare il libxml2.2.dylib collegato. Quello all'interno di Xcode è intenzionalmente utilizzato per garantire che Xcode ottenga qualcosa di cui è a conoscenza e in teoria è stato testato. Potresti voler usare il dylib nel sistema più tardi (leggi in questo thread)
  • Dato che sto usando Xcode 6.2b3, potrei avere una nuova libxml2.2.dylib. Il tuo potrebbe avere un nome leggermente diverso. Basta cercare nella cartella qualcosa che inizi con "libxml" e termini con ".dylib" e dovrebbe essere così. Potrebbe anche esserci un alias come "libxml2.dylib". Non usarlo subito poiché la risoluzione di un alias aggiunge un'altra variabile all'equazione "cosa potrebbe avere bug" di Xcode.
  • Per ragioni di sanità mentale, creo alias delle librerie esterne, le rinomino per indicare quale sono e le mantengo allo stesso livello del file di progetto nel Finder. Se cambiano posizione, cambiano nome, ecc., L'alias avrà in Ottieni informazioni, il percorso completo del file originale per un successivo lavoro di investigazione per ottenere la compilazione e il collegamento del progetto di nuovo. (i collegamenti simbolici si interrompono troppo facilmente e non sono naturali per il Mac)
  • Ultima cosa, e molto importante, vedi http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html dove puoi scaricare XpathQuery e ottenere un po 'più di bontà.

spero che questo ti aiuti.

Se ti capita di sviluppare qualcosa per i veterani, diciamo un'app per iPhone / iPad o Mac, e stai lavorando contro qualcosa chiamato "MDWS" o "VIA" che sono interfacce basate su SOAP per il sistema di cartelle cliniche ... per favore contattami


0

Ho risolto in tre passaggi inXcode 8.0 + Unit Test Project

1) Ho aggiunto il file libxml a Build Phases. Segui questo link

2) Ho aggiunto altri flag del linker come-ObjC (per entrambi gli obiettivi del progetto e del progetto di test)

3) Ho impostato il percorso di ricerca dell'intestazione come"${SDKROOT}/usr/include/libxml2" (Non dimenticare le virgolette doppie su entrambi i lati) (sia per obiettivi di progetto che di test)

Uno di loro risolverà il problema. In caso contrario, devi applicare tutti e tre i precedenti.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.