libxml / tree.h nenhum arquivo ou diretório

100

Estou recebendo os seguintes erros.

libxml / tree.h nenhum arquivo ou diretório

Já acrescentei libxml2.dylibao meu projeto, porém estou tendo esse tipo de problema. Por favor me ajude.

Sagar R. Kothari
fonte
2
Quando você diz que já adicionou ao seu projeto, o que exatamente você fez? Não acho que o XCode ache que funcionou.
Devin Ceartas
1
se você tiver esse problema no XCode 4.6, acesse aqui stackoverflow.com/questions/14622684/…
Boris Gafurov
Atualize sua captura de tela.
Usuário

Respostas:

213

Siga as instruções aqui , em "Configurando seu arquivo de projeto."

Configurando seu arquivo de projeto

Você precisa adicionar libxml2.dylib ao seu projeto (não coloque na seção Frameworks). No Mac, você o encontrará em /usr/lib/libxml2.dylibe para o iPhone, você vai querer o /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib versão.

Como libxml2 é um .dylib (não é um .framework amigável e legal), ainda temos mais uma coisa a fazer. Vá para as configurações de construção do Projeto (Projeto-> Editar Configurações do Projeto-> Compilar) e encontre os "Caminhos de Pesquisa". Em "Caminhos de pesquisa de cabeçalho", adicione o seguinte caminho:

$(SDKROOT)/usr/include/libxml2

Veja também a resposta do OP .

Matt Ball
fonte
12
Não faça o que diz quando ele pede para você adicionar "/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2" ao caminho de pesquisa de cabeçalho. Em vez disso, adicione "/ usr / include / libxml2. Isso torna seu projeto independente de SDKs específicos.
cdespinosa
Isso funciona contanto que haja um link simbólico para ele no /usr/include. Não tentei instalar o libxml2, então não posso confirmar o comportamento padrão. Mas sim, é muito melhor vinculá-lo dessa forma.
Matt Ball,
1
Ao desenvolver no XCode, o GCC usa a opção -isysroot que realoca a raiz do SDK. Se você adicionar / usr / include / libxml2 nos caminhos de pesquisa do cabeçalho, ele será traduzido no momento da compilação para a pasta usr / include / libxml2 DENTRO do SDK atual.
Laurent Etiemble
Quando eu defino "$ (SDKROOT) / usr / include / libxml2" para o caminho de pesquisa do cabeçalho (XCode 4.2), ele diz que "" _OBJC_METACLASS _ $ _ UIResponder ", referenciado em: _OBJC_METACLASS _ $ _ D2GAppDelegate em MyDemo.oAppDelegate symbol: (s) não encontrado (s) para a arquitetura i386 ". O que eu posso fazer?
NicTesla
1
Ótimo. obrigado. estava faltando '$ (SDKROOT)', o que criou problemas.
86

Adicionando libxml2 no Xcode 4.3 / 5/6

Adicionar libxml2 é uma grande dor na bunda enjoativa. Se você vai fazer isso, faça-o antes de ir muito longe na construção do seu projeto.


Você precisa adicioná-lo de duas maneiras :

1. Configurações de destino

Clique no seu alvo (não no seu projeto) e selecione Build Phases.

Clique no triângulo de revelação com o título Link Binary With Libraries. Clique em +para adicionar uma biblioteca.

Vá até o final da lista e selecione libxml2.dylib. Isso adiciona a biblioteca libxml2 ao seu projeto.

2. Configurações do projeto

Agora você precisa dizer ao seu projeto onde procurá-lo mais três vezes.

Selecione o Build Settings tab.

Role para baixo até a Linkingseção. Nas colunas de seus projetos, clique duas vezes na Other Linker Flagslinha. Clique em +e adicione -lxml2à lista.

Ainda mais.

Na mesma guia, role para baixo até a Search Pathsseção.

Em sua coluna de projetos na Framework Search Pathslinha adicionar /usr/lib/libxml2.dylib.

No Header Search Paths e na User Header Search Pathslinha, adicione $(SDKROOT)/usr/include/libxml2.

Nesses dois últimos casos, certifique-se de que o caminho seja inserido em Depurar e Liberar.

3. Limpo

No Productmenu, selecione Clean.

Então, se eu fosse você (e vamos encarar, provavelmente eu sou), eu sairia do Xcode e iria embora. Quando você voltar e lançar, você deve estar pronto para partir.

Ew Parris
fonte
Obrigado, esta foi a única solução que funcionou para mim com o Xcode 4.3.3
lifjoy
1
Essas instruções passo a passo foram as únicas que funcionaram para mim (Xcode 4.4.1). Obrigado!
Frank
Funcionou para mim sem definir os caminhos de pesquisa do Framework no Xcode 4.1.1
Richard Garside
1
opening import file 'Swift.swift': Not a directorydepois de fazer isso no Xcode 5.
Usuário
1
Também recebi o erro "abrindo arquivo de importação para o módulo 'Swift': Não é um diretório". Para corrigir isso, simplesmente não adicione "/usr/lib/libxml2.dylib" a "Framework Search Paths". Ainda funcionou para mim depois que ignorei essa etapa.
Daniel Ryan
22

Para o Xcode 6, tive que fazer o seguinte:

1) adicionar a biblioteca "libxml2.dylib" ao TARGET do meu projeto (fases de construção -> Vincular binário às bibliotecas)

2) adicione "$ (SDKROOT) / usr / include / libxml2" aos Caminhos de pesquisa de cabeçalho no TARGET (Configurações de compilação -> Caminhos de pesquisa de cabeçalho)

Depois disso, o alvo deve ser construído com sucesso.

Andy Shephard
fonte
Alguma razão pela qual / usr / include / libxml2 nas configurações do projeto NÃO funciona?
Paul Brewczynski
19

Você também precisa adicionar /usr/include/libxml2ao seu caminho de inclusão.

Michael Krelin - hacker
fonte
11

Forme o link de @Matt Ball,

Descobri que seguir foi útil para mim.

Você precisa adicionar libxml2.dylib ao seu projeto (não coloque na seção Frameworks). No Mac, você o encontrará em /usr/lib/libxml2.dylibe para o iPhone, você vai querer o/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylib versão.

Como libxml2 é um .dylib (não é um .framework amigável e legal), ainda temos mais uma coisa a fazer. Vá para as configurações de construção do projeto ( Project->Edit Project Settings->Build) e encontre o " Search Paths". Em "Caminhos de pesquisa de cabeçalho", adicione o seguinte caminho no Mac:

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

Ray Wenderlich tem uma postagem no blog sobre o uso de gdata que resolve esse problema. Basicamente, estas etapas simples:

No XCode, clique em Projeto \ Editar configurações do projeto e certifique-se de que “Todas as configurações” estejam marcadas.

Encontre a configuração Caminhos de pesquisa \ Caminhos de pesquisa do cabeçalho e adicione / usr / include / libxml2 à lista.

Finalmente, localize a seção Linking \ Other Linker Flags e adicione -lxml2 à lista.

postagem original: leia e escreva documentos xml com gdataxml

bennythemink
fonte
2
Encontrei essa resposta em muitos lugares, mas todos se esqueceram de mencionar que é o caminho de pesquisa do cabeçalho no projeto, não no destino. Muito obrigado por explicar isso corretamente.
esbenr
7

Achei o mesmo, tive que adicionar $ (SDKROOT) / usr / include / libxml2 para o Xcode mais recente (4.3.x). TAMBÉM, o que me manteve circulando por horas é o fato de que eu estava modificando o "TARGET" e não o "PROJECT" (a nova UI do Xcode é tão complexa que é fácil ignorar isso). Você precisa modificar o PROJETO!

Mike
fonte
5

Outra solução. execute todas as etapas no caminho de pesquisa do cabeçalho, etc. e certifique-se de que a configuração selecionada no projeto em Configurações do projeto seja a correta. Ao clicar duas vezes nas configurações de construção do projeto, você pode estar alterando as configurações de Distribuição, mas está tentando adicionar o caminho de pesquisa do cabeçalho nas configurações de "Depurar". Portanto, verifique se as configurações estão corretas. ou escolha todas as configurações

SP
fonte
4

Descobri que, com o xCode 4.3.2, tive que inserir $ (SDKROOT) / usr / include / libxml2 no campo Header Search em vez de simplesmente / usr / include / libxml2

fsharp
fonte
4

A partir do Mavericks (OS X 10.9), o diretório / usr / include desapareceu . Metade das respostas aqui são obsoletas, pois o aplicativo não será compilado até que você classifique o diretório de inclusão.

Resolvi o problema criando um link simbólico para MacOSX SDK no terminal, usando o seguinte comando:

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

O aplicativo agora compila novamente.

Sem legol
fonte
Exatamente o que eu estava procurando. Isso funciona perfeitamente. Apenas certifique-se de colocar em seus caminhos de pesquisa de cabeçalho / usr / include / libxml2
Josh Bernfeld
3

Não tenho certeza de qual é a diferença, mas adicione o caminho de inclusão para o projeto, bem como o destino.

pschang
fonte
3

No Mountain Lion eu estava enfrentando o mesmo problema, que foi resolvido adicionando /usr/include/libxml2para incluir caminhos com sinalizador "recursivo", use isso se tudo acima não for produtivo.

Aqib Mumtaz
fonte
2

Tive esse problema quando reabri um projeto (que foi desenvolvido no XCode 3.algo no Leopard) após atualizar para o Snow Leopard e o XCode 3.2. Curiosamente, isso afetou apenas alguns tipos de builds (os builds do emulador funcionaram bem, os do dispositivo me deram o erro). E eu tenho libxml2 em / usr / include, e de fato contém libxml / tree.h.

Mesmo a mágica "Limpar" não funcionou, mas "Vazios Caches ..." no menu "XCode" (entre o logotipo da Apple e Arquivo) funcionou (esse menu estava lá nas versões anteriores?). Não sei o motivo, mas depois de uma limpeza, não houve mais reclamações em relação a libxml / tree.h

chesterbr
fonte
2

Selecione também "Sempre pesquisar caminhos de usuário" para SIM. No XCode 4.3.3 é por padrão NÃO

Atif
fonte
2

Por favor, siga os seguintes passos

  1. Adicionar libxml2
    libxml2.dylib pode ser encontrado em seu Mac Machin em /usr/lib/libxml2.dylib

  2. Alterar "Caminhos de pesquisa de cabeçalho"
    Clique em [Nome do projeto] (no painel esquerdo) -> Projeto -> Configurações de compilação -> Selecionar tudo (o padrão é Básico)
    Digite Caminhos de pesquisa de cabeçalho na caixa de pesquisa
    Clique duas vezes em Caminhos de pesquisa de cabeçalho -> + - > "$ (SDKROOT) / usr / include / libxml2"

  3. Adicione -lxml2 a "Outro sinalizador de linker"
    Pesquise por "Outros sinalizadores de linker " conforme pesquisa na etapa 2,
    clique na linha "Outros sinalizadores de linker ". Clique em "+" e adicione "-lxml2" à lista.

  4. Altere o tipo de projeto para ARC -> Não, ou seja, contagem automática de referência para Não. Você pode pesquisar ARC conforme a etapa 2

mandar
fonte
2

Xcode 4.5 Eu usei a solução do CW inteiramente. A única exceção é que $ (SDKROOT) / usr / include / libxml2 não funcionou para mim, e eu tive que adicionar "$ (SDK_DIR)" / usr / include / libxml2 aos meus caminhos de pesquisa de cabeçalho de projeto e Caminhos de pesquisa de cabeçalho de usuário . Depois que o projeto for construído com sucesso.

EDIT: Eu tenho o projeto Google GData dentro do meu projeto (chamado MyProject) (meu projeto usa). GData requer libxml. Para construir o projeto MyProject com sucesso, adiciono "$ (SDK_DIR)" / usr / include / libxml2 aos Caminhos de pesquisa de cabeçalho de MyProject e não aos Caminhos de pesquisa de cabeçalho de GData . Se eu não o adicionei ao MyProject, o projeto não foi compilado ).

Petr
fonte
1

Blockquote Adicionando libxml2 no Xcode 4.3.x

Adicionar libxml2 é uma grande dor na bunda enjoativa. Se você vai fazer isso, faça-o antes de ir muito longe na construção de seu projeto.

Veja como.

Configurações de destino

Clique no seu destino (não no seu projeto) e selecione "Build Phases". Clique no triângulo de exibição intitulado "Link Binary With Libraries". Clique em "+" para adicionar uma biblioteca. Role até o final da lista e selecione "libxml2.dylib". Isso adiciona a biblioteca libxml2 2 ao seu projeto ... mas espere.

Configurações do projeto

Agora você precisa dizer ao seu projeto onde procurá-lo mais três vezes.

Selecione a "guia Configurações de construção". Role para baixo até a seção "Vinculação". Abaixo das colunas do seu projeto, clique duas vezes na linha "Outros sinalizadores de vinculação". Clique em "+" e adicione "-lxml2" à lista.

Ainda mais.

Na mesma guia, role para baixo até a seção "Caminhos de pesquisa". Na coluna do seu projeto, na linha "Framework Search Paths", adicione "/usr/lib/libxml2.dylib".

Em "Caminhos de pesquisa de cabeçalho" E na linha "Caminhos de pesquisa de cabeçalho do usuário", adicione "$ (SDKROOT) / usr / include / libxml2". Nesses dois últimos casos, certifique-se de que o caminho seja inserido em Depurar E Liberar.

Então. No menu "Produto", selecione "Limpar".

Isso está funcionando e para o Xcode5 também! Obrigado!

Denko
fonte
1
Isso não está funcionando no Xcode 5.0.2. Fiz as alterações acima em meu projeto, mas sem sorte. Você pode me ajudar no que precisa ser feito.
Ganesh
1

Não coloque libxml2.dylib na pasta frameworks, coloque-o na raiz logo abaixo da raiz (ícone azul superior esquerdo)

Em seguida, clique no projeto (ícone azul SUPERIOR esquerdo), vá para Configurações de compilação, na caixa de pesquisa digite "Caminhos de pesquisa de cabeçalho" e adicione este "$ (SDKROOT) / usr / include / libxml2"

Este código resolve meu problema, espero que ajude você a corrigir isso

Ranjan
fonte
1

@Aqib Mumtaz - Eu fiz isso funcionar seguindo as instruções na nota de Parris acima intitulada "Adicionando libxml2 no Xcode 4.3 / 5/6". A etapa de uso de um caminho de pesquisa de estrutura não funciona e o compilador reclama. Muitos parabéns para aquele cara de qualquer maneira!

Estou usando o Xcode 6.2b3

Independentemente da versão do Xcode que você está usando, é um bug. Nem sempre presuma que os erros de compilação são reais. Muitas vezes, quando ele não segue caminhos de pesquisa de cabeçalho e inclui claramente listados não são encontrados. Pior, os erros resultantes tendem a apontá-lo em direções diferentes, de modo que você perde muito tempo brincando com distrações. Com isso dito ...

Recomende pequenos passos começando exatamente com isso ...:

  1. criar um projeto Mac OS X Cocoa de janela única chamado "Teste de Bancada"
  2. adicione XpathQuery em seu diretório de origem do projeto diretamente no Finder
  3. clique no ícone da pequena pasta sob o botão vermelho de fechamento da janela do projeto
  4. arraste XpathQuery (pasta se você a contiver) para os ativos do projeto à esquerda da tela da janela do projeto
  5. arraste /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib em seus ativos de projeto, na parte inferior. Isso irá adicioná-lo às suas "Fases de construção" -> "Vincular binário às bibliotecas" de maneira fácil
  6. clique no ícone do projeto "Teste de bancada" na coluna de ativos do projeto, no canto superior esquerdo
  7. procure por "Outros sinalizadores de linker" em "Configurações de compilação"
  8. adicione "-lxml2" (sans "") a "Outros sinalizadores de linker" na coluna de ícone do projeto "Teste de bancada"
  9. procure por "pesquisa de cabeçalho" em "Configurações de compilação"
  10. adicione "$ (SDKROOT) / usr / include / libxml2" (sans "") a "Caminhos de pesquisa de cabeçalho" na coluna de ícone do projeto "Teste de bancada"
  11. adicione "$ (SDKROOT) / usr / include / libxml2" (sans "") a "Caminhos de pesquisa do cabeçalho do usuário" na coluna do ícone do projeto "Teste de bancada"

Notas:

  • O meu não funcionaria até que eu adicionasse esse caminho de pesquisa para "Caminhos de pesquisa de cabeçalho" e "Caminhos de pesquisa de cabeçalho do usuário".
  • Para chegar ao libxml2.2.dylib no localizador, você precisará clicar com o botão direito do mouse no ícone do Xcode e selecionar "Mostrar contatos do pacote" (editorial: que hack .. enfiar todo aquele lixo no aplicativo)
  • Esteja preparado para alterar o libxml2.2.dylib vinculado. O que está dentro do Xcode é intencionalmente usado para garantir que o Xcode obtenha algo que conhece e, em teoria, foi testado. Você pode querer usar o dylib no sistema mais tarde (leia neste tópico)
  • Como estou usando o Xcode 6.2b3, posso ter uma libxml2.2.dylib mais recente. O seu pode ter um nome ligeiramente diferente. Apenas procure na pasta algo que comece com "libxml" e termine com ".dylib" e deve ser isso. Também pode haver um alias como "libxml2.dylib". Não use isso imediatamente, pois resolver um alias adiciona outra variável na equação "o que poderia ter bugs" no Xcode.
  • Por razões de sanidade, eu crio apelidos para as bibliotecas externas, renomeio-as para indicar quais são e as mantenho no mesmo nível do arquivo de projeto no Finder. Se eles mudarem de local, mudarem de nome, etc, o alias terá em Get Info, o caminho completo do arquivo original para trabalho de detetive posterior para fazer o projeto compilar e vincular novamente. (os links simbólicos quebram muito facilmente e não são naturais para o Mac)
  • Por último, e muito importante, consulte http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html onde você pode baixar XpathQuery e obter mais vantagens.

espero que isto ajude.

Se por acaso você está desenvolvendo algo para veteranos, digamos, um aplicativo para iPhone / iPad ou Mac, e está trabalhando contra algo chamado "MDWS" ou "VIA", que são interfaces baseadas em SOAP para o sistema de registro médico ... entre em contato comigo

William Cerniuk
fonte
0

Resolvi em três etapas no projeto de teste de unidade Xcode 8.0 +

1) Eu adicionei o arquivo libxml às fases de construção. Siga este link

2) Eu adicionei outros sinalizadores de linker como -ObjC(para os alvos do projeto e do projeto de teste)

3) Eu configurei o caminho de pesquisa do cabeçalho como"${SDKROOT}/usr/include/libxml2" (não se esqueça das aspas duplas em ambos os lados) (para os alvos do projeto e do projeto de teste)

Um deles resolverá o problema. Caso contrário, você deve aplicar todos os três itens acima.

Zumry Mohamed
fonte