it-swarm.com.ru

libxml/tree.h нет такого файла или каталога

Я получаю следующие ошибки.

libxml/tree.h нет такого файла или каталога

Я уже добавил libxml2.dylib в свой проект, однако у меня возникают проблемы такого типа . Пожалуйста, помогите мне.

98
Sagar R. Kothari

Следуйте указаниям здесь , в разделе «Настройка файла проекта».

Настройка файла вашего проекта

Вам нужно добавить libxml2.dylib в ваш проект (не помещайте его в раздел Frameworks). На Mac, вы найдете его по адресу /usr/lib/libxml2.dylib, а для iPhone - хочу /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib версия.

Так как libxml2 - это .dylib (а не дружественный .framework), мы все еще есть еще одна вещь, чтобы сделать. Перейдите в настройки сборки проекта (Проект-> Изменить настройки проекта-> Построить) и найдите «Пути поиска» . В «Пути поиска по заголовку» добавьте следующий путь:

$(SDKROOT)/usr/include/libxml2

Также см. ответ ОП .

213
Matt Ball

Добавление libxml2 в Xcode 4.3/5/6

Добавление libxml2 - большая, толстая, привередливая боль в заднице. Если вы собираетесь это сделать, сделайте это прежде, чем зайдете слишком далеко в построении своего проекта.


Вам нужно добавить его двумя способами:

1. Целевые настройки

Нажмите на свою цель (не ваш проект) и выберите Build Phases.

Нажмите на раскрыть треугольник под названием Link Binary With Libraries. Нажмите на +, чтобы добавить библиотеку.

Прокрутите до конца списка и выберите libxml2.dylib. Это добавляет библиотеку libxml2 в ваш проект.

2. Настройки проекта

Теперь вы должны указать своему проекту, где его искать три более раза.

Выберите Build Settings tab.

Прокрутите вниз до раздела Linking . Под столбцами ваших проектов дважды щелкните строку Other Linker Flags . Щелкните + и добавьте -lxml2 в список.

Еще больше.

На той же вкладке прокрутите вниз до раздела Search Paths.

Под столбцом ваших проектов в строке Framework Search Paths добавьте /usr/lib/libxml2.dylib.

В строке Header Search Paths и User Header Search Paths добавьте $(SDKROOT)/usr/include/libxml2.

В этих двух последних случаях убедитесь, что путь введен в Debug и Release.

3. Чистый

В меню Product выберите Clean.

Затем, если бы я был вами (и давайте посмотрим правде в глаза, я, вероятно, буду), я бы вышел из Xcode и ушел. Когда ты вернешься и запустишься, у тебя все получится.

86
e.w. parris

Для Xcode 6 мне пришлось сделать следующее:

1) добавить библиотеку "libxml2.dylib" в TARGET моего проекта (этапы сборки -> связать двоичные файлы с библиотеками)

2) добавьте «$ (SDKROOT)/usr/include/libxml2» к путям поиска по заголовкам на TARGET (Настройки сборки -> Пути поиска по заголовкам)

После этого цель должна успешно построить.

22
Andy Shephard

Вам также необходимо добавить /usr/include/libxml2 в ваш путь включения.

19
Michael Krelin - hacker

У Рэя Вендерлиха есть запись в блоге об использовании gdata, которая решает эту проблему. В основном эти простые шаги:

В XCode нажмите «Проект\Изменить параметры проекта» и убедитесь, что «Все конфигурации» отмечены.

Найдите параметр Search Paths\Header Search Paths и добавьте/usr/include/libxml2 в список.

Наконец, найдите раздел «Связывание\Другие флаги компоновщика» и добавьте -lxml2 в список.

исходное сообщение: читать и писать документы XML с gdataxml

11
bennythemink

Сформируйте ссылку @Matt Ball,

Я нашел следующие полезные для меня.

Вам нужно добавить libxml2.dylib в ваш проект (не помещайте его в раздел Frameworks). На Mac вы найдете его по адресу /usr/lib/libxml2.dylib, а для iPhone вам понадобится версия /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylib.

Поскольку libxml2 - это .dylib (а не дружественный .framework), у нас еще есть кое-что еще сделать. Перейдите в настройки сборки проекта (Project->Edit Project Settings->Build) и найдите «Search Paths». В «Пути поиска по заголовкам» добавьте следующий путь на Mac:

 /usr/include/libxml2 
11
Sagar R. Kothari

Я нашел то же самое, мне пришлось добавить $ (SDKROOT)/usr/include/libxml2 для последней версии Xcode (4.3.x). ТАКЖЕ, что заставляло меня кружить в течение нескольких часов, так это то, что я модифицировал «TARGET», а не «PROJECT» (новый пользовательский интерфейс XCode настолько сложен, что это легко упустить из виду). Вам нужно изменить проект!

7
Mike

Другое решение выполните все шаги в пути поиска по заголовку и т. д. и убедитесь, что выбранная вами конфигурация в проекте в настройках проекта является правильной. Когда вы дважды щелкаете по настройкам сборки проекта, вы можете изменить настройки дистрибутива, но вы пытаетесь добавить путь поиска заголовка в настройках «Отладка». Поэтому убедитесь, что вы в правильных настройках. или выберите все настройки 

5
S.P.

Начиная с Mavericks (OS X 10.9), каталог/usr/include пропал . Половина ответов здесь устарели, так как приложение не будет компилироваться, пока вы не разберетесь с каталогом include.

Я решил проблему, создав символическую ссылку на MacOSX SDK в терминале, используя следующую команду:

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

Приложение теперь снова компилируется.

4
Legoless

Я обнаружил, что с xCode 4.3.2 мне нужно было войти $ (SDKROOT)/usr/include/libxml2 В поле поиска заголовка, а не просто /USR/включать/libxml2

4
fsharp

На Mountain Lion я столкнулся с той же проблемой, которая была решена путем добавления /usr/include/libxml2, чтобы включить пути с флагом "recursive", используйте это, если все вышеперечисленное не является плодотворным.

3
Aqib Mumtaz

Я не уверен, в чем разница, но добавляю включаемый путь к проекту, а также к цели.

3
pschang

Пожалуйста, выполните следующие шаги

  1. Добавление libxml2
    libxml2.dylib можно найти на вашем компьютере Mac по адресу /usr/lib/libxml2.dylib 

  2. Изменить «Пути поиска в заголовке»
    Нажмите [Имя проекта] (на левой панели) -> Проект -> Настройки сборки -> Выбрать все (по умолчанию - Основные)
    Введите пути поиска заголовка в поле поиска.
    Дважды щелкните по Пути поиска в заголовке -> + -> "$ (SDKROOT)/usr/include/libxml2" 

  3. Добавьте -lxml2 к «Другой флаг компоновщика»
    Поиск «Другие флаги компоновщика» как поиск в шаге 2
    нажмите на строку «Другие флаги компоновщика». Нажмите «+» и добавьте «-lxml2» в список.

  4. Измените тип вашего проекта на ARC -> Нет, т.е. автоматический подсчет ссылок на № Вы можете искать ARC согласно шагу 2

2
mandar

Также выберите «Всегда искать пути пользователя» к YES. В XCode 4.3.3 его по умолчанию НЕТ

2
Atif

У меня была эта проблема, когда я снова открыл проект (который был разработан на XCode 3. что-то на Leopard) после обновления до Snow Leopard и XCode 3.2. Любопытно, что это повлияло только на некоторые виды сборок (сборки на эмуляторе шли хорошо, устройства дали мне ошибку). И у меня есть libxml2 в/usr/include, и он действительно содержит libxml/tree.h.

Даже магия «Очистить» не сработала, но «Очистить кеши ...» в меню «XCode» (между логотипом Apple и файлом) добились цели (было ли это меню в предыдущих версиях?). Бьет меня причина, но после очистки больше не было жалоб на libxml/tree.h

2
chesterbr

Xcode 4.5 Я полностью использовал решение CW. Единственное исключение - это то, что $ (SDKROOT)/usr/include/libxml2 не работает для меня, и мне пришлось добавить "$ (SDK_DIR)"/usr/include/libxml2 в мои проекты Пути поиска по заголовку и Пути поиска по заголовку пользователя . После этого проект будет успешно собран.

Правка: у меня есть проект Google GData внутри моего проекта (называется MyProject) (мой проект использует). GData требует libxml. Чтобы успешно построить проект MyProject, я добавляю «$ (SDK_DIR)»/usr/include/libxml2 к путям поиска по заголовкам MyProject, а нет к путям поиска по заголовкам GData . Если я не добавил его в MyProject, то проект не был построен ).

2
Petr

Я нашел этот визуальный учебник полезно. 

2
Frank Fu

Blockquote Добавление libxml2 в Xcode 4.3.x

Добавление libxml2 - большая, толстая, привередливая боль в заднице. Если вы собираетесь это сделать, сделайте это до того, как зайдете слишком далеко в построении своего проекта.

Вот как.

Настройки цели

Нажмите на свою цель (не ваш проект) и выберите «Фазы сборки». Нажмите на раскрывающийся треугольник под названием «Link Binary With Libraries». Нажмите на «+», чтобы добавить библиотеку. Прокрутите до конца списка и выберите «libxml2.dylib». Это добавляет библиотеку libxml2 2 в ваш проект ... но подождите.

Настройки проекта

Теперь вы должны сообщить своему проекту, где искать его еще три раза.

Выберите вкладку «Настройки сборки». Прокрутите вниз до раздела «Связывание». Под столбцами вашего проекта дважды щелкните по строке «Другие флаги компоновщика». Нажмите «+» и добавьте «-lxml2» в список.

Еще больше.

На той же вкладке прокрутите вниз до раздела «Пути поиска». Под столбцом вашего проекта в строке «Framework Search Paths» добавьте «/usr/lib/libxml2.dylib».

В строке «Пути поиска по заголовку» И в строке «Пути поиска по заголовку пользователя» добавьте «$ (SDKROOT)/usr/include/libxml2». В этих двух последних случаях убедитесь, что путь введен в Debug AND Release.

Затем. В меню «Продукт» выберите «Очистить».

Это работает и для Xcode5 тоже! Спасибо!

1
Denko

@ Акиб Мумтаз - я получил его, следуя инструкциям в примечании Парриса выше, озаглавленном «Добавление libxml2 в Xcode 4.3/5/6». Этап использования Framework Search Path не работает, и компилятор жалуется. В любом случае, большое спасибо этому парню!

Я использую Xcode 6.2b3

Независимо от версии Xcode, которую вы используете, он глючит. Не всегда предполагайте, что ошибки компиляции реальны. Есть много раз, когда он не следует пути поиска заголовка и включает в себя четко перечисленные не найдены. Хуже того, возникающие ошибки, как правило, указывают на вас в разных направлениях, поэтому вы тратите много времени на то, чтобы отвлекаться. С этим сказал ...

Рекомендуйте детские шаги, начиная с этого точно ...:

  1. создать одно окно Mac OS X проект Какао под названием «Bench Test»
  2. добавьте XpathQuery в исходный каталог вашего проекта прямо в Finder 
  3. нажмите на крошечный значок папки под красной кнопкой закрытия окна проекта
  4. перетащите XpathQuery (папку, если вы ее содержали) в ресурсы проекта слева от экрана окна проекта
  5. перетащите /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib в ресурсы вашего проекта, внизу. Это добавит его в ваши «Фазы сборки» -> «Связать двоичные файлы с библиотеками» простым способом
  6. нажмите на значок проекта «Bench Test» в верхней части левого столбца активов проекта.
  7. найдите «Другие флаги компоновщика» в разделе «Настройки сборки»
  8. добавьте "-lxml2" (sans "") в "Другие флаги компоновщика" в столбце значка проекта "Bench Test"
  9. поиск "поиск заголовка" в разделе "Настройки сборки"
  10. добавьте "$ (SDKROOT)/usr/include/libxml2" (sans "") в "Пути поиска заголовка" в столбце значка проекта "Bench Test"
  11. добавьте "$ (SDKROOT)/usr/include/libxml2" (sans "") в "Пути поиска по заголовкам пользователей" в столбце значка проекта "Bench Test"

Заметки:

  • Мой не будет работать, пока я не добавлю этот путь поиска в «Пути поиска заголовка» и «Пути поиска заголовка пользователя».
  • Чтобы перейти к libxml2.2.dylib в Finder, вам нужно будет щелкнуть правой кнопкой мыши по значку Xcode и выбрать «Показать контакты пакета» (редакционная статья: что за хак ... втиснуть весь этот мусор в приложение)
  • Будьте готовы изменить связанный libxml2.2.dylib. Один внутри Xcode преднамеренно используется, чтобы гарантировать, что Xcode получит то, о чем он знает, и теоретически был протестирован. Вы можете использовать dylib в системе позже (читайте в этой теме)
  • Поскольку я использую Xcode 6.2b3, у меня может быть более новая библиотека libxml2.2.dylib. Ваш можно назвать немного по-другому. Просто найдите в папке что-то, что начинается с «libxml» и заканчивается на «.dylib», и это должно быть так. Также может быть псевдоним, такой как «libxml2.dylib». Не используйте это сразу, поскольку разрешение псевдонима добавляет еще одну переменную в уравнение «что может иметь ошибки» в Xcode.
  • Для здравого смысла я делаю псевдонимы внешних библиотек, переименовываю их, чтобы указать, какие они есть, и сохраняю их на том же уровне, что и файл проекта в Finder. Если они меняют местоположение, меняют имя и т.д., Псевдоним будет иметь в его «Get Info» полный путь к исходному файлу для дальнейшей детективной работы, чтобы проект снова компилировался и связывался. (символические ссылки ломаются слишком легко и не являются естественными для Mac)
  • Последнее, и очень важное, см. http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html где вы можете скачать XpathQuery и получить еще больше удовольствия.

надеюсь это поможет. 

Если вам случается разрабатывать что-то для ветеранов, о, скажем, приложение для iPhone/iPad или Mac, и вы работаете против чего-то, называемого «MDWS» или «VIA», которые являются SOAP интерфейсами к системе медицинских карт ... пожалуйста свяжись со мной

1
William Cerniuk

Не помещайте libxml2.dylib в папку frameworks, поместите ее под root чуть ниже корня (верхний левый синий значок)

Затем нажмите на проект (верхний левый синий значок), перейдите к настройкам сборки, в поле поиска введите «Пути поиска в заголовке» и добавьте этот «$ (SDKROOT)/usr/include/libxml2»

Этот код решает мою проблему, надеюсь, это поможет вам исправить это

1
Ranjan

я подумал, что я добавил неправильно, тогда я понимаю, что проблема в том, что он не поддерживает дугу, поэтому проверьте поддержку здесь, спасатель -> http://www.michaelbabiy.com/arc-compliant-gdataxml-library/

0
Bhimbim

Я решил в три шага в Xcode 8.0 + Unit Test Project

1) Я добавил файл libxml в Фазы сборки. Перейдите по этой ссылке ссылка

2) Я добавил Другие флаги компоновщика как -ObjC (как для проекта, так и для тестового проекта)

3) Я устанавливаю Header Search Path как "${SDKROOT}/usr/include/libxml2" (не забывайте двойные кавычки с обеих сторон) (как для целей проекта, так и для целей тестового проекта)

Один из них решит проблему. Если нет, вы должны применить все три вышеперечисленных. 

0
Zumry Mohamed