libxml / tree.h 해당 파일 또는 디렉토리 없음


100

다음과 같은 오류가 발생합니다.

libxml / tree.h 해당 파일 또는 디렉토리 없음

이미 libxml2.dylib프로젝트에 추가 했지만 이런 유형의 문제가 발생합니다. 제발 도와주세요.


2
이미 프로젝트에 추가했다고 말할 때 정확히 무엇을 했습니까? XCode가 효과가 있다고 생각하지 않습니다.
Devin Ceartas

1
XCode 4.6에서이 문제가있는 경우 여기로 이동하십시오. stackoverflow.com/questions/14622684/…
Boris Gafurov 2013

스크린 샷을 업데이트하십시오.
User

답변:


213

지시에 따라 여기 에서, "프로젝트 파일 설정."

프로젝트 파일 설정

프로젝트에 libxml2.dylib를 추가해야합니다 (프레임 워크 섹션에 넣지 마십시오). Mac에서는에서 찾을 수 /usr/lib/libxml2.dylib있고 iPhone에서는 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib 버전을 원할 것 입니다.

libxml2는 .dylib (친근한 .framework가 아님)이기 때문에 여전히해야 할 일이 하나 더 있습니다. 프로젝트 빌드 설정 (프로젝트-> 프로젝트 설정 편집-> 빌드)으로 이동하여 "검색 경로"를 찾으십시오. "Header Search Paths"에서 다음 경로를 추가합니다.

$(SDKROOT)/usr/include/libxml2

또한 OP의 답변을 참조하십시오 .


12
헤더 검색 경로에 "/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2"를 추가하라는 메시지가 표시되는대로하지 마십시오. 추가 "는 / usr / 포함 / libxml2를 대신 즉, 특정 SDK를 프로젝트 독립을합니다..
cdespinosa

실제로에 심볼릭 링크가있는 한 작동 /usr/include합니다. libxml2 설치를 시도하지 않았으므로 기본 동작을 확인할 수 없습니다. 그러나 예, 그렇게 연결하는 것이 훨씬 낫습니다.
Matt Ball

1
XCode에서 개발할 때 GCC는 SDK의 루트를 재배치하는 -isysroot 옵션을 사용합니다. 헤더 검색 경로에 / usr / include / libxml2를 추가하면 컴파일시 현재 SDK 내 usr / include / libxml2 폴더로 변환됩니다.
Laurent Etiemble 2010

이 "$ (SDKROOT) / usr / include / libxml2"를 헤더 검색 경로 (XCode 4.2)로 설정하면 "" "_OBJC_METACLASS _ $ _ UIResponder"가 참조 된 것보다 다음에서 참조 : _OBJC_METACLASS _ $ _ D2GAppDelegate in MyDemoAppDelegate.o ld : symbol (s) 아키텍처 i386에 대해 찾을 수 없음 ". 어떡해?
NicTesla 2012

1
큰. 감사. 문제를 일으킨 '$ (SDKROOT)'가 누락되었습니다.

86

Xcode 4.3 / 5 / 6에 libxml2 추가

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.

마지막 두 경우에서 경로가 디버그 릴리스에 입력되었는지 확인하십시오 .

3. 청소

언더 Product메뉴 선택 Clean.

그런 다음 내가 당신이라면 (그리고 그것을 직시하면 아마 그렇습니다) 나는 Xcode를 그만두고 떠나 버릴 것입니다. 돌아와서 발사하면 잘 가야합니다.


감사합니다. 이것이 Xcode 4.3.3에서 저에게 도움이 된 유일한 솔루션이었습니다
lifjoy

1
이 단계별 지침은 저에게 효과적이었습니다 (Xcode 4.4.1). 감사!
프랭크

엑스 코드 4.1.1 프레임 워크 검색 경로를 설정하지 않고 나를 위해 일
리처드 Garside

1
opening import file 'Swift.swift': Not a directoryXcode 5에서이 작업을 수행 한 후
User

1
또한 " 'Swift'모듈에 대한 가져 오기 파일 열기 : 디렉터리가 아님"오류가 발생했습니다. 이 문제를 해결하려면 "프레임 워크 검색 경로"에 "/usr/lib/libxml2.dylib"를 추가하지 마십시오. 그 단계를 무시한 후에도 여전히 나를 위해 일했습니다.
Daniel Ryan

22

Xcode 6의 경우 다음을 수행해야했습니다.

1) "libxml2.dylib"라이브러리를 내 프로젝트의 TARGET (빌드 단계-> 라이브러리와 바이너리 연결)에 추가합니다.

2) TARGET의 헤더 검색 경로에 "$ (SDKROOT) / usr / include / libxml2"를 추가합니다 (빌드 설정-> 헤더 검색 경로).

그 후에 타겟이 성공적으로 빌드되어야합니다.


프로젝트 설정에서 / usr / include / libxml2가 작동하지 않는 이유는 무엇입니까?
Paul Brewczynski 2015


11

@Matt Ball의 링크를 형성하고,

다음이 도움이된다는 것을 알았습니다.

프로젝트에 libxml2.dylib를 추가해야합니다 (프레임 워크 섹션에 넣지 마십시오). 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"을 찾습니다 . "Header Search Paths"에서 Mac의 다음 경로를 추가합니다.

 /usr/include/libxml2 

11

Ray Wenderlich는이 문제를 해결하는 gdata 사용에 대한 블로그 게시물을 가지고 있습니다. 기본적으로 다음과 같은 간단한 단계 :

XCode에서 Project \ Edit Project Settings를 클릭하고 "All Configurations"가 선택되어 있는지 확인합니다.

검색 경로 \ 헤더 검색 경로 설정을 찾고 / usr / include / libxml2를 목록에 추가하십시오.

마지막으로 Linking \ Other Linker Flags 섹션을 찾아 목록에 -lxml2를 추가합니다.

원래 게시물 : gdataxml로 xml 문서 읽기 및 쓰기


2
이 답변을 여러 곳에서 찾았지만 모두 대상이 아닌 프로젝트의 헤더 검색 경로라는 것을 언급하는 것을 잊었습니다. 제대로 설명 해주셔서 감사합니다.
esbenr

7

나는 똑같은 것을 발견했고, 최신 Xcode (4.3.x)에 대해 $ (SDKROOT) / usr / include / libxml2를 추가해야했습니다. 또한 내가 몇 시간 동안 계속 돌아 다니는 것은 "PROJECT"가 아니라 "TARGET"을 수정했다는 사실입니다 (Xcode의 새로운 UI는 너무 복잡해서 간과하기 쉽습니다). PROJECT를 수정해야합니다!


5

또 다른 해결책. 헤더 검색 경로 등의 모든 단계를 수행하고 프로젝트 설정의 프로젝트에서 선택한 구성이 올바른지 확인하십시오. 프로젝트 빌드 설정을 두 번 클릭하면 배포 설정에서 변경 될 수 있지만 "디버그"설정에서 헤더 검색 경로를 추가하려고합니다. 따라서 올바른 설정인지 확인하십시오. 또는 모든 설정 선택


4

xCode 4.3.2에서는 단순히 / usr / include / libxml2가 아닌 헤더 검색 필드에 $ (SDKROOT) / usr / include / libxml2를 입력해야한다는 것을 알았습니다.


4

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

이제 응용 프로그램이 다시 컴파일됩니다.


내가 찾던 바로 그것. 이것은 완벽하게 작동합니다. 그냥 헤더 검색 경로에 있는지 확인하십시오 당신은 / usr / 등은 / libxml2를 넣어
조쉬 Bernfeld

3

차이점이 무엇인지 잘 모르겠지만 프로젝트와 대상에 포함 경로를 추가합니다.


3

Mountain Lion에서 나는 동일한 문제에 직면했는데, /usr/include/libxml2"재귀 적"플래그가있는 경로를 포함하도록 추가 하여 해결되었습니다 . 위의 모든 것이 유익하지 않은 경우 이것을 사용하십시오.


2

Snow Leopard 및 XCode 3.2로 업그레이드 한 후 프로젝트 (Leopard에서 XCode 3에서 개발 한 것)를 다시 열 때이 문제가 발생했습니다. 흥미롭게도 일부 종류의 빌드에만 영향을 미쳤습니다 (에뮬레이터 빌드는 괜찮 았고 장치 빌드는 오류를주었습니다). 그리고 / usr / include에 libxml2가 있으며 실제로 libxml / tree.h가 포함되어 있습니다.

심지어 마법 "클린"작업하지 않았다 하지만 (Apple 로고 및 파일 사이의)은 "엑스 코드"메뉴에서 "... 빈 캐시"속임수를 썼는지 (해당 메뉴는 이전 버전에 있던?). 그 이유는 나에게 이겼지 만 청소 후 libxml / tree.h에 대한 불만은 더 이상 없었습니다.


2

또한 "항상 사용자 경로 검색"을 예로 선택하십시오. XCode 4.3.3에서는 기본적으로 NO


2

다음 단계를 따르십시오

  1. libxml2 추가
    libxml2.dylib는 /usr/lib/libxml2.dylib의 Mac machin에서 찾을 수 있습니다.

  2. "헤더 검색 경로"변경
    [프로젝트 이름] (왼쪽 패널)-> 프로젝트-> 빌드 설정-> 모두 선택 (기본값은 기본)
    검색 상자에 헤더 검색 경로 입력 헤더 검색 경로를
    두 번 클릭-> +- > "$ (SDKROOT) / usr / include / libxml2"

  3. "기타 링커 플래그"에 -lxml2를 추가
    합니다. 2 단계에서 검색 할 때 "기타 링커 플래그"를 검색
    하고 "기타 링커 플래그"행을 클릭합니다. "+"를 클릭하고 "-lxml2"를 목록에 추가하십시오.

  4. 프로젝트 유형을 ARC로 변경-> 아니오 즉 자동 참조 계수를 아니오로 변경하십시오. 2 단계에 따라 ARC를 검색 할 수 있습니다.


2

Xcode 4.5 저는 The CW의 솔루션을 완전히 사용했습니다. 유일한 예외는 $ (SDKROOT) / usr / include / libxml2가 나를 위해 작동하지 않았고 "$ (SDK_DIR)"/ usr / include / libxml2 를 내 프로젝트 헤더 검색 경로사용자 헤더 검색 경로 에 추가해야한다는 것입니다. . 그 후 프로젝트가 성공적으로 빌드됩니다.

편집 : 내 프로젝트 (MyProject라고 함)에 Google GData 프로젝트가 있습니다 (내 프로젝트 사용). GData에는 libxml이 필요합니다. MyProject 프로젝트를 성공적으로 빌드하기 위해 MyProject의 헤더 검색 경로에 "$ (SDK_DIR)"/ usr / include / libxml2를 추가하고 GData의 헤더 검색 경로에는 no를 추가 합니다. MyProject에 추가 하지 않으면 프로젝트 가 빌드되지 않았습니다 ).



1

Blockquote Xcode 4.3.x에서 libxml2 추가

libxml2를 추가하는 것은 엉덩이에 크고 뚱뚱하고 까다로운 고통입니다. 프로젝트를 너무 많이 구축하기 전에 그렇게하려고한다면.

방법은 다음과 같습니다.

타겟 설정

프로젝트가 아닌 대상을 클릭하고 "Build Phases"를 선택합니다. "Link Binary With Libraries"라는 표시 삼각형을 클릭합니다. 라이브러리를 추가하려면 "+"를 클릭하십시오. 목록 맨 아래로 스크롤하여 "libxml2.dylib"를 선택하십시오. 그러면 프로젝트에 libxml2 라이브러리 2가 추가됩니다…

프로젝트 설정

이제 프로젝트에서 찾을 위치를 세 번 더 알려야합니다.

"빌드 설정 탭"을 선택하십시오. "연결"섹션까지 아래로 스크롤합니다. 프로젝트 열에서 "기타 링커 플래그"행을 두 번 클릭합니다. "+"를 클릭하고 "-lxml2"를 목록에 추가하십시오.

아직 더 많이.

같은 탭에서 "검색 경로"섹션까지 아래로 스크롤합니다. "Framework Search Paths"행의 프로젝트 열 아래에 "/usr/lib/libxml2.dylib"를 추가합니다.

"Header Search Paths"및 "User Header Search Paths"행에 "$ (SDKROOT) / usr / include / libxml2"를 추가합니다. 마지막 두 경우에는 디버그 및 릴리스에 경로가 입력되었는지 확인하십시오.

그때. "제품"메뉴에서 "청소"를 선택합니다.

이것은 작동하며 Xcode5에서도 마찬가지입니다! 감사합니다!


1
이것은 Xcode 5.0.2에서 작동하지 않습니다. 위의 프로젝트를 변경했지만 운이 없습니다. 해야 할 일을 도와 줄 수 있습니까?
Ganesh

1

libxml2.dylib를 frameworks 폴더 아래에 두지 말고 루트 바로 아래에 두십시오 (왼쪽 상단 파란색 아이콘)

그런 다음 프로젝트 (TOP 왼쪽 파란색 아이콘)를 클릭하고 빌드 설정으로 이동하여 검색 상자에 "Header Search Paths"를 입력 한 다음 "$ (SDKROOT) / usr / include / libxml2"를 추가합니다.

이 코드는 내 문제를 해결하는 데 도움이되기를 바랍니다.


1

@Aqib Mumtaz-위의 Parris 노트의 "Adding libxml2 in Xcode 4.3 / 5/6"라는 제목의 지침에 따라 작업했습니다. 프레임 워크 검색 경로를 사용하는 단계가 작동하지 않고 컴파일러가 불평합니다. 어쨌든 그 친구에게 큰 명성!

Xcode 6.2b3을 사용하고 있습니다.

사용중인 Xcode 버전에 관계없이 버그가 있습니다. 컴파일 오류가 실제라고 항상 가정하지는 마십시오. 헤더 검색 경로를 따르지 않고 명확하게 나열된 포함을 찾을 수없는 경우가 많습니다. 더 나쁜 것은 결과적으로 발생하는 오류로 인해 다른 방향을 가리키는 경향이 있으므로주의를 산만하게하는 데 많은 시간을 낭비하게됩니다. 그 말로 ...

다음과 같이 정확히 시작하여 아기 단계를 권장합니다 ... :

  1. "Bench Test"라는 단일 창 Mac OS X Cocoa 프로젝트를 만듭니다.
  2. Finder에서 직접 프로젝트 소스 디렉토리에 XpathQuery를 추가하십시오.
  3. 프로젝트 창의 빨간색 닫기 버튼 아래에있는 작은 폴더 아이콘을 클릭합니다.
  4. XpathQuery (포함 된 경우 폴더)를 프로젝트 창의 디스플레이 왼쪽에있는 프로젝트 자산으로 끌어옵니다.
  5. /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib를 하단의 프로젝트 자산으로 드래그합니다. 이렇게하면 "Build Phases"-> "Link Binary With Libraries"에 쉽게 추가됩니다.
  6. 왼쪽 상단의 프로젝트 자산 열에서 "벤치 테스트"프로젝트 아이콘을 클릭합니다.
  7. "Build Settings"에서 "Other Linker Flags"를 검색합니다.
  8. "Bench Test"프로젝트 아이콘 열 ​​아래의 "Other Linker Flags"에 "-lxml2"(sans "")를 추가합니다.
  9. "Build Settings"에서 "header search"를 검색합니다.
  10. "Bench Test"프로젝트 아이콘 열 ​​아래의 "Header Search Paths"에 "$ (SDKROOT) / usr / include / libxml2"(sans "")를 추가합니다.
  11. "벤치 테스트"프로젝트 아이콘 열 ​​아래의 "사용자 헤더 검색 경로"에 "$ (SDKROOT) / usr / include / libxml2"(sans "")를 추가합니다.

노트:

  • 내 검색 경로를 "Header Search Paths"와 "User Header Search Paths"모두에 추가 할 때까지 작동하지 않습니다.
  • 파인더에서 libxml2.2.dylib로 이동하려면 Xcode 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "패키지 연락처 표시"를 선택해야합니다 (편집 : 무슨 해킹 .. 모든 쓰레기를 앱에 넣음).
  • 링크 된 libxml2.2.dylib를 변경할 준비를하십시오. 한 엑스 코드 내부를 의도적으로 엑스 코드가 테스트 한에 대한 이론으로 알고 뭔가를 얻을 수 있도록하는 데 사용됩니다. 나중에 시스템에서 dylib를 사용할 수 있습니다 (이 스레드에서 읽어보십시오).
  • Xcode 6.2b3을 사용하고 있으므로 최신 libxml2.2.dylib가있을 수 있습니다. 당신의 이름은 약간 다를 수 있습니다. 폴더에서 "libxml"로 시작하고 ".dylib"로 끝나는 항목을 검색하면됩니다. "libxml2.dylib"와 같은 별칭이있을 수도 있습니다. 별칭을 해결하면 Xcode "버그가있을 수있는 것"방정식에 다른 변수가 추가되므로 즉시 사용하지 마십시오.
  • 온전하게 외부 라이브러리의 별칭을 만들고 이름을 변경하여 어떤 라이브러리인지 표시하고 Finder의 프로젝트 파일과 동일한 수준으로 유지합니다. 위치를 변경하거나 이름을 변경하는 경우 별칭은 나중에 탐정 작업을 통해 프로젝트를 컴파일하고 다시 연결하기위한 원본 파일의 전체 경로 인 정보 가져 오기에 포함됩니다. (심볼 링크가 너무 쉽게 끊어지고 Mac에 자연스럽지 않음)
  • 마지막으로, 매우 중요한 것은 http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html 에서 XpathQuery를 다운로드하고 더 많은 장점을 얻을 수 있습니다.

도움이 되었기를 바랍니다.

재향 군인을위한 무언가를 개발하고있는 경우, iPhone / iPad 또는 Mac 앱을 사용하고 의료 기록 시스템에 대한 SOAP 기반 인터페이스 인 "MDWS"또는 "VIA"라는 항목에 대해 작업하고 있다면 저에게 연락하십시오.


0

Xcode 8.0 + 단위 테스트 프로젝트에서 세 단계로 해결했습니다.

1) 나는이 빌드 Phases.follow에 libxml 파일을 추가 링크

2) 다른 링커 플래그-ObjC(프로젝트 및 테스트 프로젝트 대상 모두)로 추가했습니다.

3) 헤더 검색 경로"${SDKROOT}/usr/include/libxml2"(양쪽에 큰 따옴표를 잊지 마십시오) (프로젝트 및 테스트 프로젝트 대상 모두)로 설정했습니다.

그들 중 하나가 문제를 해결할 것입니다. 그렇지 않은 경우 위의 세 가지를 모두 적용해야합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.