libxml / tree.h no existe tal archivo o directorio

100

Recibo siguientes errores.

libxml / tree.h no existe tal archivo o directorio

Ya lo agregué libxml2.dyliba mi proyecto, sin embargo, tengo este tipo de problemas. Por favor, ayúdame.

Sagar R. Kothari
fuente
2
Cuando dice que ya lo agregó a su proyecto, ¿qué hizo exactamente? No creo que XCode crea que haya funcionado.
Devin Ceartas
1
si tiene este problema en XCode 4.6, vaya aquí stackoverflow.com/questions/14622684/…
Boris Gafurov
Actualiza tu captura de pantalla.
Usuario

Respuestas:

213

Siga las instrucciones aquí , en "Configuración de su archivo de proyecto".

Configurando su archivo de proyecto

Necesita agregar libxml2.dylib a su proyecto (no lo ponga en la sección Frameworks). En Mac, lo encontrará en /usr/lib/libxml2.dyliby para iPhone, querrá la /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib versión.

Dado que libxml2 es un .dylib (no un .framework agradable y amigable) todavía tenemos una cosa más por hacer. Vaya a la configuración de la compilación del proyecto (Proyecto-> Editar configuración del proyecto-> Compilación) y busque las "Rutas de búsqueda". En "Rutas de búsqueda de encabezado", agregue la siguiente ruta:

$(SDKROOT)/usr/include/libxml2

También vea la respuesta del OP .

Matt Ball
fuente
12
No haga lo que dice cuando le pide que agregue "/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2" a la ruta de búsqueda del encabezado. Agregue "/ usr / include / libxml2 en su lugar. Eso hace que su proyecto sea independiente de los SDK específicos.
cdespinosa
Eso funciona siempre que haya un enlace simbólico a él /usr/include. No he intentado instalar libxml2, así que no puedo confirmar el comportamiento predeterminado. Pero sí, es mucho mejor vincularlo de esa manera.
Matt Ball
1
Al desarrollar bajo XCode, GCC usa la opción -isysroot que reubica la raíz del SDK. Si agrega / usr / include / libxml2 en las rutas de búsqueda del encabezado, se traducirá en el momento de la compilación a la carpeta usr / include / libxml2 DENTRO del SDK actual.
Laurent Etiemble
Cuando configuro este "$ (SDKROOT) / usr / include / libxml2" en la ruta de búsqueda del encabezado (XCode 4.2), dice que "" _OBJC_METACLASS _ $ _ UIResponder ", referenciado desde: _OBJC_METACLASS _ $ _ D2GAppDelegate en MyDemoAppdDelegate.o (s) no encontrado para la arquitectura i386 ". ¿Que puedo hacer?
NicTesla
1
Excelente. Gracias. Me faltaba '$ (SDKROOT)', lo que creaba problemas.
86

Añadiendo libxml2 en Xcode 4.3 / 5/6

Agregar libxml2 es un gran, gordo y meticuloso dolor en el trasero. Si va a hacerlo, hágalo antes de llegar demasiado lejos en la construcción de su proyecto.


Debe agregarlo de dos maneras :

1. Configuración de destino

Haga clic en su objetivo (no en su proyecto) y seleccione Build Phases .

Haga clic en el triángulo de revelación titulado Link Binary With Libraries. Haga clic en el+ para agregar una biblioteca.

Desplácese hasta el final de la lista y seleccione libxml2.dylib . Eso agrega la biblioteca libxml2 a su proyecto.

2. Configuración del proyecto

Ahora tienes que decirle a tu proyecto dónde buscarlo tres veces más.

Seleccione el Build Settings tab.

Desplácese hacia abajo hasta la Linkingsección. Debajo de las columnas de sus proyectos, haga doble clic en la Other Linker Flagsfila. Haga clic en +y agregue -lxml2a la lista.

Aún más.

En la misma pestaña, desplácese hacia abajo hasta la Search Pathssección.

En la columna de sus proyectos en la Framework Search Pathsfila agregue /usr/lib/libxml2.dylib.

En el Header Search Paths y la User Header Search Pathsfila complemento $(SDKROOT)/usr/include/libxml2.

En esos dos últimos casos, asegúrese de que la ruta esté ingresada en Debug and Release.

3. Limpiar

En el Productmenú, seleccione Clean.

Entonces, si yo fuera usted (y seamos sinceros, probablemente lo sea) dejaría Xcode y me iría. Cuando regrese y lance, estará listo para comenzar.

ew parris
fuente
Gracias, esta fue la única solución que funcionó para mí con Xcode 4.3.3
lifjoy
1
Estas instrucciones paso a paso fueron las únicas que funcionaron para mí (Xcode 4.4.1). ¡Gracias!
Frank
Me funcionó sin configurar las rutas de búsqueda de Framework en Xcode 4.1.1
Richard Garside
1
opening import file 'Swift.swift': Not a directorydespués de hacer esto en Xcode 5.
Usuario
1
También recibí el error "abrir archivo de importación para el módulo 'Swift': no ​​es un directorio". Para solucionar este problema, simplemente no agregue "/usr/lib/libxml2.dylib" a "Rutas de búsqueda del marco". Todavía funcionó para mí después de ignorar ese paso.
Daniel Ryan
22

Para Xcode 6, tuve que hacer lo siguiente:

1) agregar la biblioteca "libxml2.dylib" al OBJETIVO de mi proyecto (Fases de compilación -> Vincular binarios con bibliotecas)

2) agregue "$ (SDKROOT) / usr / include / libxml2" a las Rutas de búsqueda de encabezado en el OBJETIVO (Configuración de compilación -> Rutas de búsqueda de encabezado)

Después de esto, el objetivo debería construirse correctamente.

Andy Shephard
fuente
¿Alguna razón por la que / usr / include / libxml2 en la configuración del proyecto NO funciona?
Paul Brewczynski
19

También debe agregar /usr/include/libxml2a su ruta de inclusión.

Michael Krelin - hacker
fuente
11

Forme el enlace de @Matt Ball,

Encontré lo siguiente útil para mí.

Necesita agregar libxml2.dylib a su proyecto (no lo ponga en la sección Frameworks). En Mac, lo encontrará en /usr/lib/libxml2.dyliby para iPhone, querrá el/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylib versión.

Dado que libxml2 es un .dylib (no un .framework agradable y amigable) todavía tenemos una cosa más por hacer. Vaya a la configuración de construcción del proyecto ( Project->Edit Project Settings->Build) y busque " Search Paths". En "Rutas de búsqueda de encabezado", agregue la siguiente ruta en la Mac:

 /usr/include/libxml2 
Sagar R. Kothari
fuente
11

Ray Wenderlich tiene una publicación de blog sobre el uso de gdata que resuelve este problema. Básicamente estos sencillos pasos:

En XCode, haga clic en Proyecto \ Editar configuración del proyecto y asegúrese de que "Todas las configuraciones" estén marcadas.

Busque la configuración Rutas de búsqueda \ Rutas de búsqueda de encabezado y agregue / usr / include / libxml2 a la lista.

Finalmente, busque la sección Linking \ Other Linker Flags y agregue -lxml2 a la lista.

publicación original: leer y escribir documentos xml con gdataxml

bennythemink
fuente
2
Encontré esta respuesta en muchos lugares, pero todos olvidaron mencionar que es la ruta de búsqueda del encabezado en el proyecto, no en el objetivo. Muchas gracias por explicarlo correctamente.
esbenr
7

Encontré lo mismo, tuve que agregar $ (SDKROOT) / usr / include / libxml2 para el último Xcode (4.3.x). TAMBIÉN, lo que me mantuvo dando vueltas durante horas es el hecho de que estaba modificando el "OBJETIVO" y no el "PROYECTO" (la nueva interfaz de usuario de Xcode es tan compleja que es fácil pasar por alto esto). ¡Necesitas modificar el PROYECTO!

Miguel
fuente
5

Otra solución. siga todos los pasos en la ruta de búsqueda del encabezado, etc. y asegúrese de que la configuración seleccionada en el proyecto en la configuración del proyecto sea la correcta. Cuando hace doble clic en la configuración de construcción del proyecto, es posible que esté cambiando la configuración de Distribución, pero está intentando agregar la ruta de búsqueda del encabezado en la configuración de "Depuración". Así que asegúrese de estar en la configuración correcta. o elige todas las configuraciones

SP
fuente
4

Descubrí que con xCode 4.3.2 tenía que ingresar $ (SDKROOT) / usr / include / libxml2 en el campo de búsqueda de encabezado en lugar de simplemente / usr / include / libxml2

fsharp
fuente
4

A partir de Mavericks (OS X 10.9), el directorio / usr / include desapareció . La mitad de las respuestas aquí son obsoletas, ya que la aplicación no se compilará hasta que clasifique el directorio de inclusión.

Resolví el problema creando un enlace simbólico a MacOSX SDK en la terminal, usando el siguiente comando:

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

La aplicación ahora se compila de nuevo.

Legoless
fuente
Exactamente lo que estaba buscando. Esto funciona perfecto. Solo asegúrese de que en las rutas de búsqueda de su encabezado ponga / usr / include / libxml2
Josh Bernfeld
3

No estoy seguro de cuál es la diferencia, pero agregue la ruta de inclusión al proyecto, así como al objetivo.

pschang
fuente
3

En Mountain Lion estaba enfrentando el mismo problema, que se resolvió agregando /usr/include/libxml2para incluir rutas con la bandera "recursiva", use esto si todo lo anterior no es fructífero.

Aqib Mumtaz
fuente
2

Tuve este problema cuando volví a abrir un proyecto (que se desarrolló en XCode 3, algo en Leopard) después de actualizar a Snow Leopard y XCode 3.2. Curiosamente, solo afectó a algunos tipos de compilaciones (las compilaciones del emulador funcionaron bien, las del dispositivo me dieron el error). Y tengo libxml2 en / usr / include, y de hecho contiene libxml / tree.h.

Incluso la magia "Limpiar" no funcionó, pero "Vaciar cachés ..." en el menú "XCode" (entre el logotipo de Apple y Archivo) funcionó (¿estaba ese menú en versiones anteriores?). Me supera la razón, pero después de una limpieza no hubo más quejas con respecto a libxml / tree.h

chesterbr
fuente
2

También seleccione "Buscar siempre rutas de usuario" en SÍ. En XCode 4.3.3 es por defecto NO

Atif
fuente
2

Siga los siguientes pasos

  1. Agregar libxml2
    libxml2.dylib se puede encontrar en su máquina mac en /usr/lib/libxml2.dylib

  2. Cambiar "Rutas de búsqueda de encabezado"
    Haga clic en [Nombre del proyecto] (en el panel izquierdo) -> Proyecto -> Configuración de compilación -> Seleccionar todo (el valor predeterminado es Básico)
    Escriba Rutas de búsqueda de encabezado en el cuadro de búsqueda
    Haga doble clic en Rutas de búsqueda de encabezado -> + - > "$ (SDKROOT) / usr / include / libxml2"

  3. Agregue -lxml2 a "Otro indicador del vinculador"
    Busque "Otros indicadores del vinculador " mientras busca en el paso 2,
    haga clic en la fila "Otros indicadores del vinculador ". Haga clic en "+" y agregue "-lxml2" a la lista.

  4. Cambie su tipo de proyecto a ARC -> No, es decir, Recuento automático de referencias a No Puede buscar ARC según el paso 2

mandar
fuente
2

Xcode 4.5 He usado la solución de The CW por completo. La única excepción es que $ (SDKROOT) / usr / include / libxml2 no funcionó para mí, y tuve que agregar "$ (SDK_DIR)" / usr / include / libxml2 a mis rutas de búsqueda de encabezado de proyectos y rutas de búsqueda de encabezado de usuario . Después de que el proyecto se construya con éxito.

EDITAR: Tengo un proyecto de Google GData dentro de mi proyecto (llamado MyProject) (mi proyecto usa). GData requiere libxml. Para construir el proyecto MyProject con éxito, agrego "$ (SDK_DIR)" / usr / include / libxml2 a las rutas de búsqueda de encabezado de MyProject y no a las rutas de búsqueda de encabezado de GData . Si no lo agregué a MyProject, el proyecto no se compiló ).

Petr
fuente
1

Blockquote Agregar libxml2 en Xcode 4.3.x

Agregar libxml2 es un gran, gordo y meticuloso dolor en el trasero. Si vas a hacerlo, hazlo antes de llegar demasiado lejos en la construcción de tu proyecto.

Así es cómo.

Configuración de destino

Haga clic en su objetivo (no en su proyecto) y seleccione "Fases de construcción". Haga clic en el triángulo de revelación titulado "Vincular binarios con bibliotecas". Haga clic en el "+" para agregar una biblioteca. Desplácese hasta el final de la lista y seleccione "libxml2.dylib". Eso agrega la biblioteca libxml2 2 a su proyecto ... pero espere.

Configuración del proyecto

Ahora tienes que decirle a tu proyecto dónde buscarlo tres veces más.

Seleccione la pestaña "Configuración de compilación". Desplácese hacia abajo hasta la sección "Vinculación". Debajo de las columnas de su proyecto, haga doble clic en la fila "Otras banderas del vinculador". Haga clic en "+" y agregue "-lxml2" a la lista.

Aún más.

En la misma pestaña, desplácese hacia abajo hasta la sección "Rutas de búsqueda". Debajo de la columna de su proyecto en la fila "Rutas de búsqueda del marco" agregue "/usr/lib/libxml2.dylib".

En las "Rutas de búsqueda de encabezado" Y la fila "Rutas de búsqueda de encabezado de usuario" agregue "$ (SDKROOT) / usr / include / libxml2". En esos dos últimos casos, asegúrese de que la ruta esté ingresada en Debug AND Release.

Luego. En el menú "Producto", seleccione "Limpiar".

¡Esto está funcionando y también para Xcode5! ¡Gracias!

Denko
fuente
1
Esto no funciona en Xcode 5.0.2. Hice los cambios anteriores en mi proyecto, pero no tuve suerte. ¿Puedes ayudarme en lo que hay que hacer?
Ganesh
1

No coloque libxml2.dylib en la carpeta frameworks, colóquelo debajo de la raíz justo debajo de la raíz (icono azul superior izquierdo)

Luego haga clic en el proyecto (icono azul ARRIBA a la izquierda), vaya a configuración de compilación, en el cuadro de búsqueda escriba "Rutas de búsqueda de encabezado" y luego agregue este "$ (SDKROOT) / usr / include / libxml2"

Este código resuelve mi problema, espero que te ayude a solucionarlo.

Ranjan
fuente
1

@Aqib Mumtaz - Lo hice funcionar siguiendo las instrucciones en la nota de Parris anterior titulada "Agregar libxml2 en Xcode 4.3 / 5/6". El paso para usar una ruta de búsqueda de marco no funciona y el compilador se queja. ¡Grandes felicitaciones para ese tipo de todos modos!

Estoy usando Xcode 6.2b3

Independientemente de la versión de Xcode que esté utilizando, tiene errores. No asuma siempre que los errores de compilación son reales. Hay muchas ocasiones en las que no sigue las rutas de búsqueda del encabezado e incluye claramente que no se encuentran. Peor aún, los errores que resultan tienden a apuntar en diferentes direcciones, por lo que pierde mucho tiempo jugando con distracciones. Con eso dicho...

Recomiende pequeños pasos comenzando exactamente con esto ...:

  1. crear un proyecto Cocoa de Mac OS X de ventana única llamado "Prueba de banco"
  2. agregue XpathQuery en el directorio de origen de su proyecto directamente en el Finder
  3. haga clic en el pequeño icono de carpeta debajo del botón rojo de cierre de la ventana del proyecto
  4. arrastre XpathQuery (carpeta si la contenía) a los activos del proyecto a la izquierda de la pantalla de la ventana del proyecto
  5. arrastre /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib en los activos de su proyecto, en la parte inferior. Esto lo agregará a sus "Fases de compilación" -> "Vincular binarios con bibliotecas" de manera fácil
  6. haga clic en el icono del proyecto "Bench Test" en la columna de activos del proyecto, en la parte superior izquierda
  7. busque "Otras banderas del vinculador" en "Configuración de compilación"
  8. agregue "-lxml2" (sans "") a "Otras banderas del vinculador" en la columna del icono del proyecto "Prueba de banco"
  9. busque "búsqueda de encabezado" en "Configuración de compilación"
  10. agregue "$ (SDKROOT) / usr / include / libxml2" (sans "") a "Rutas de búsqueda de encabezado" en la columna del icono del proyecto "Prueba de banco"
  11. agregue "$ (SDKROOT) / usr / include / libxml2" (sans "") a "Rutas de búsqueda de encabezado de usuario" en la columna del icono del proyecto "Prueba de banco"

Notas:

  • El mío no funcionaría hasta que agregué esa ruta de búsqueda a las "Rutas de búsqueda de encabezado" y "Rutas de búsqueda de encabezado de usuario".
  • Para acceder a libxml2.2.dylib en el buscador, deberá hacer clic con el botón derecho en el icono de Xcode y seleccionar "Mostrar contactos del paquete" (editorial: qué truco ... meter toda esa basura en la aplicación)
  • Esté preparado para cambiar el libxml2.2.dylib vinculado. El que está dentro de Xcode se usa intencionalmente para garantizar que Xcode obtenga algo que sabe y, en teoría, fue probado. Es posible que desee utilizar el dylib en el sistema más adelante (lea en este hilo)
  • Como estoy usando Xcode 6.2b3, es posible que tenga una libxml2.2.dylib más nueva. El tuyo podría tener un nombre ligeramente diferente. Simplemente busque en la carpeta algo que comience con "libxml" y termine con ".dylib" y eso debería ser. También puede haber un alias como "libxml2.dylib". No lo use de inmediato, ya que la resolución de un alias agrega otra variable a la ecuación "lo que podría tener errores" de Xcode.
  • Por el bien de la cordura, hago alias de las bibliotecas externas, les cambio el nombre para indicar cuáles son y las mantengo al mismo nivel que el archivo del proyecto en el Finder. Si cambian de ubicación, cambian de nombre, etc., el alias tendrá en su Get Info, la ruta completa del archivo original para el trabajo de detective posterior para que el proyecto se compile y se vincule nuevamente. (los enlaces simbólicos se rompen con demasiada facilidad y no son naturales en Mac)
  • Por último, y muy importante, consulte http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html donde puede descargar XpathQuery y obtener más bondades.

espero que esto ayude.

Si está desarrollando algo para veteranos, digamos una aplicación para iPhone / iPad o Mac, y está trabajando en contra de algo llamado "MDWS" o "VIA", que son interfaces basadas en SOAP para el sistema de registros médicos ... por favor contácteme

William Cerniuk
fuente
0

Resolví en tres pasos en Xcode 8.0 + Unit Test Project

1) Agregué el archivo libxml a Build Phases. Siga este enlace

2) Agregué otras banderas del vinculador como-ObjC (para objetivos de proyecto y de proyecto de prueba)

3) Configuré la ruta de búsqueda del encabezado como"${SDKROOT}/usr/include/libxml2" (no olvide las comillas dobles en ambos lados) (para los objetivos del proyecto y del proyecto de prueba)

Uno de ellos solucionará el problema. De lo contrario, debe aplicar los tres anteriores.

Zumry Mohamed
fuente