libxml / tree.h không có tệp hoặc thư mục nào như vậy


100

Tôi nhận được các lỗi sau.

libxml / tree.h không có tệp hoặc thư mục nào như vậy

Tôi đã thêm vào libxml2.dylibdự án của mình, tuy nhiên tôi đang gặp phải loại rắc rối này. Làm ơn giúp tôi.


2
Khi bạn nói rằng bạn đã thêm nó vào dự án của mình, chính xác thì bạn đã làm gì? Tôi không nghĩ rằng XCode nghĩ rằng nó đã hoạt động.
Devin Ceartas

1
nếu bạn có vấn đề này trong XCode 4.6 đi đây stackoverflow.com/questions/14622684/...
Boris Gafurov

Cập nhật ảnh chụp màn hình của bạn.
Người dùng

Câu trả lời:


213

Làm theo hướng dẫn tại đây , trong "Thiết lập tệp dự án của bạn".

Thiết lập tệp dự án của bạn

Bạn cần thêm libxml2.dylib vào dự án của mình (không đặt nó trong phần Framework). Trên Mac, bạn sẽ tìm thấy nó ở /usr/lib/libxml2.dylibvà đối với iPhone, bạn sẽ muốn có /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib phiên bản.

Vì libxml2 là .dylib (không phải là .framework thân thiện tốt đẹp) nên chúng tôi vẫn còn một việc nữa phải làm. Đi tới cài đặt xây dựng Dự án (Dự án-> Chỉnh sửa Cài đặt Dự án-> Bản dựng) và tìm "Đường dẫn tìm kiếm". Trong "Đường dẫn Tìm kiếm Tiêu đề", hãy thêm đường dẫn sau:

$(SDKROOT)/usr/include/libxml2

Cũng xem câu trả lời của OP .


12
Đừng làm những gì nói khi nó yêu cầu bạn thêm "/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2" vào Đường dẫn Tìm kiếm Tiêu đề. Thêm "/ usr / include / libxml2 thay vì Điều đó làm cho độc lập dự án của bạn của SDK cụ thể..
cdespinosa

Điều đó chỉ hoạt động miễn là thực sự có một liên kết biểu tượng với nó trong đó /usr/include. Tôi chưa thử cài đặt libxml2 nên không thể xác nhận hành vi mặc định. Nhưng có, tốt hơn nhiều nếu liên kết nó theo cách đó.
Matt Ball

1
Khi phát triển theo XCode, GCC sử dụng tùy chọn -isysroot để chuyển vị trí gốc của SDK. Nếu bạn thêm / usr / include / libxml2 trong đường dẫn tìm kiếm tiêu đề, nó sẽ được dịch tại thời điểm biên dịch sang thư mục usr / include / libxml2 BÊN TRONG SDK hiện tại.
Laurent Etiemble

Khi tôi đặt "$ (SDKROOT) / usr / include / libxml2" này thành Đường dẫn tìm kiếm tiêu đề (XCode 4.2), nó cho biết "" _OBJC_METACLASS _ $ _ UIResponder ", được tham chiếu từ: _OBJC_METACLASS _ $ _ D2GAppDelegate trong MyDemoAppDelegate.o l (các) không tìm thấy cho kiến ​​trúc i386 ". Tôi có thể làm gì?
NicTesla

1
Tuyệt quá. cảm ơn. tôi đã thiếu '$ (SDKROOT)', điều này đã tạo ra sự cố.

86

Thêm libxml2 trong Xcode 4.3 / 5/6

Thêm libxml2 là một cái mông to, mập mạp, đau đớn. Nếu bạn định làm, hãy làm trước khi bạn đi quá xa trong việc xây dựng dự án của mình.


Bạn cần thêm nó theo hai cách :

1. Cài đặt mục tiêu

Nhấp vào mục tiêu của bạn (không phải dự án của bạn) và chọn Build Phases.

Nhấp vào hình tam giác tiết lộ có tiêu đề Link Binary With Libraries. Bấm vào +để thêm thư viện.

Cuộn xuống cuối danh sách và chọn libxml2.dylib. Điều đó sẽ thêm thư viện libxml2 vào dự án của bạn.

2. Cài đặt dự án

Bây giờ bạn phải cho dự án của bạn biết nơi để tìm kiếm nó ba lần nữa.

Chọn Build Settings tab.

Cuộn xuống Linkingphần. Trong các cột dự án của bạn, hãy nhấp đúp vào Other Linker Flagshàng. Nhấp vào +và thêm -lxml2vào danh sách.

Còn nữa.

Trong cùng một tab, cuộn xuống Search Pathsphần.

Dưới cột dự án của bạn trong Framework Search Pathshàng thêm /usr/lib/libxml2.dylib.

Trong Header Search Paths các User Header Search Pathsadd hàng $(SDKROOT)/usr/include/libxml2.

Trong hai trường hợp cuối cùng đó, hãy đảm bảo rằng đường dẫn đó được nhập trong Gỡ lỗi Phát hành.

3. Sạch sẽ

Trong ProductMenu chọn Clean.

Sau đó, nếu tôi là bạn (và hãy đối mặt với nó, có lẽ tôi là như vậy), tôi sẽ thoát khỏi Xcode và bỏ đi. Khi bạn quay lại và khởi động, bạn nên đi.


Cảm ơn, đây là giải pháp duy nhất làm việc cho tôi với Xcode 4.3.3
lifjoy

1
Các hướng dẫn từng bước này là lần duy nhất phù hợp với tôi (Xcode 4.4.1). Cảm ơn!
Frank

Làm việc cho tôi mà không cần thiết lập các đường dẫn tìm kiếm khung trong Xcode 4.1.1
Richard Garside

1
opening import file 'Swift.swift': Not a directorysau khi thực hiện điều này trong Xcode 5.
Người dùng

1
Tôi cũng gặp lỗi "mở tệp nhập cho mô-đun 'Swift': Không phải thư mục". Để khắc phục điều này, chỉ cần không thêm "/usr/lib/libxml2.dylib" vào "Đường dẫn tìm kiếm khung". Vẫn làm việc cho tôi sau khi tôi bỏ qua bước đó.
Daniel Ryan

22

Đối với Xcode 6, tôi phải làm như sau:

1) thêm thư viện "libxml2.dylib" vào MỤC TIÊU của dự án của tôi (Xây dựng giai đoạn -> Liên kết nhị phân với thư viện)

2) thêm "$ (SDKROOT) / usr / include / libxml2" vào Đường dẫn tìm kiếm tiêu đề trên TARGET (Cài đặt bản dựng -> Đường dẫn tìm kiếm tiêu đề)

Sau đó, mục tiêu sẽ xây dựng thành công.


Bất kỳ lý do nào tại sao / usr / include / libxml2 trên cài đặt Dự án KHÔNG hoạt động?
Paul Brewczynski


11

Tạo liên kết của @Matt Ball,

Tôi thấy sau đây hữu ích cho tôi.

Bạn cần thêm libxml2.dylib vào dự án của mình (không đặt nó trong phần Framework). Trên Mac, bạn sẽ tìm thấy nó ở /usr/lib/libxml2.dylibvà đối với iPhone, bạn sẽ muốn có /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylibphiên bản.

Vì libxml2 là .dylib (không phải là .framework thân thiện tốt đẹp) nên chúng tôi vẫn còn một việc nữa phải làm. Đi tới cài đặt bản dựng Dự án ( Project->Edit Project Settings->Build) và tìm " Search Paths". Trong "Đường dẫn tìm kiếm tiêu đề", hãy thêm đường dẫn sau trên Mac:

 /usr/include/libxml2 

11

Ray Wenderlich có một bài đăng trên blog về việc sử dụng gdata để giải quyết vấn đề này. Về cơ bản, các bước đơn giản sau:

Trong XCode, nhấp vào Project \ Edit Project Settings và đảm bảo rằng “Tất cả các cấu hình” đã được chọn.

Tìm cài đặt Đường dẫn tìm kiếm \ Đường dẫn tìm kiếm tiêu đề và thêm / usr / include / libxml2 vào danh sách.

Cuối cùng, tìm phần Linking \ Other Linker Flags và thêm -lxml2 vào danh sách.

bài gốc: đọc và viết tài liệu xml với gdataxml


2
Tìm thấy câu trả lời này ở nhiều nơi, nhưng tất cả đều quên đề cập rằng nó là đường dẫn tìm kiếm Header trên dự án, không phải trên target. Cảm ơn rất nhiều vì đã giải thích nó đúng cách.
esbenr

7

Tôi thấy giống nhau, tôi phải thêm $ (SDKROOT) / usr / include / libxml2 cho Xcode mới nhất (4.3.x). CŨNG, điều khiến tôi lo lắng trong nhiều giờ là thực tế là tôi đang sửa đổi "TARGET" chứ không phải "DỰ ÁN" (giao diện người dùng mới của Xcode rất phức tạp nên rất dễ bỏ qua điều này). Bạn cần sửa đổi DỰ ÁN!


5

Giải pháp khác. thực hiện tất cả các bước trong đường dẫn tìm kiếm tiêu đề, v.v. và đảm bảo cấu hình đã chọn của bạn trong dự án trong cài đặt Dự án là cấu hình chính xác. Khi bạn nhấp đúp vào cài đặt xây dựng dự án, bạn có thể đang thay đổi trong cài đặt Phân phối, Nhưng bạn đang cố gắng thêm đường dẫn tìm kiếm tiêu đề trong cài đặt "Gỡ lỗi". Vì vậy, hãy đảm bảo rằng bạn đang cài đặt đúng. hoặc chọn tất cả cài đặt


4

Tôi thấy rằng với xCode 4.3.2, tôi phải nhập $ (SDKROOT) / usr / include / libxml2 vào trường Header Search thay vì đơn giản là / usr / include / libxml2


4

Kể từ Mavericks (OS X 10.9), thư mục / usr / include đã biến mất . Một nửa câu trả lời ở đây là lỗi thời, vì ứng dụng sẽ không biên dịch cho đến khi bạn sắp xếp thư mục bao gồm.

Tôi đã giải quyết vấn đề khi tạo một liên kết tượng trưng đến MacOSX SDK trong thiết bị đầu cuối, bằng cách sử dụng lệnh sau:

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

Ứng dụng hiện đã biên dịch lại.


Chính xác những gì tôi đang tìm kiếm. Điều này hoạt động hoàn hảo. Chỉ cần chắc chắn trong đường dẫn tìm kiếm tiêu đề của bạn, bạn đặt / usr / include / libxml2
Josh Bernfeld

3

Tôi không chắc sự khác biệt là gì nhưng thêm đường dẫn bao gồm vào dự án cũng như mục tiêu.


3

Trên Mountain Lion, tôi cũng gặp phải vấn đề tương tự, vấn đề này đã được giải quyết bằng cách thêm /usr/include/libxml2vào các đường dẫn có cờ "đệ quy", hãy sử dụng điều này nếu tất cả ở trên không hiệu quả.


2

Tôi gặp sự cố này khi mở lại một dự án (được phát triển trên XCode 3. một cái gì đó trên Leopard) sau khi nâng cấp lên Snow Leopard và XCode 3.2. Tò mò quá, nó chỉ ảnh hưởng đến một số loại bản dựng (bản dựng giả lập hoạt động tốt, những bản thiết bị đã cho tôi lỗi). Và tôi có libxml2 tại / usr / include, và nó thực sự chứa libxml / tree.h.

Ngay cả phép thuật "Clean" đã không hoạt động, nhưng "Empty Caches ..." trong menu "XCode" (giữa logo Apple và File) đã thực hiện thủ thuật (menu đó có ở các phiên bản trước không?). Đánh bại tôi lý do, nhưng sau khi làm sạch, không có thêm khiếu nại nào về libxml / tree.h


2

Cũng chọn "Luôn tìm kiếm đường dẫn người dùng" thành CÓ. Trong XCode 4.3.3 theo mặc định là KHÔNG


2

Vui lòng làm theo các bước sau

  1. Thêm libxml2
    libxml2.dylib có thể được tìm thấy trên máy mac của bạn tại /usr/lib/libxml2.dylib

  2. Thay đổi "Đường dẫn tìm kiếm tiêu đề"
    Nhấp vào [Tên dự án] (trong bảng điều khiển bên trái) -> Dự án -> Cài đặt bản dựng -> Chọn tất cả (mặc định là Cơ bản)
    Nhập Đường dẫn tìm kiếm tiêu đề vào hộp tìm kiếm
    Nhấp đúp vào Đường dẫn tìm kiếm tiêu đề -> + - > "$ (SDKROOT) / usr / include / libxml2"

  3. Thêm -lxml2 vào "Cờ trình liên kết khác"
    Tìm kiếm "Cờ trình liên kết khác" khi tìm kiếm ở bước 2,
    nhấp vào hàng "Cờ trình liên kết khác". Nhấp vào "+" và thêm "-lxml2" vào danh sách.

  4. Thay đổi loại dự án của bạn thành ARC -> Không tức là Đếm số tham chiếu tự động thành Không Bạn có thể tìm kiếm ARC như trong bước 2


2

Xcode 4.5 Tôi đã sử dụng toàn bộ giải pháp của CW. Ngoại lệ duy nhất là $ (SDKROOT) / usr / include / libxml2 không phù hợp với tôi và tôi phải thêm "$ (SDK_DIR)" / usr / include / libxml2 vào Đường dẫn tìm kiếm tiêu đề dự án và Đường dẫn tìm kiếm tiêu đề người dùng . Sau khi dự án đó xây dựng thành công.

CHỈNH SỬA: Tôi có dự án Google GData bên trong dự án của mình (được gọi là MyProject) (dự án của tôi sử dụng). GData yêu cầu libxml. Để xây dựng dự án MyProject thành công, tôi thêm "$ (SDK_DIR)" / usr / include / libxml2 vào Đường dẫn tìm kiếm tiêu đề của MyProject và không vào Đường dẫn tìm kiếm tiêu đề của GData . Nếu tôi không thêm nó vào MyProject, dự án đã không được xây dựng ).



1

Blockquote Thêm libxml2 trong Xcode 4.3.x

Thêm libxml2 là một cái mông to, mập mạp, đau đớn. Nếu bạn định làm điều đó, hãy làm điều đó trước khi bạn đi quá xa trong việc xây dựng dự án của mình.

Đây là cách thực hiện.

Cài đặt mục tiêu

Nhấp vào mục tiêu của bạn (không phải dự án của bạn) và chọn "Xây dựng giai đoạn". Nhấp vào hình tam giác tiết lộ có tiêu đề "Liên kết nhị phân với thư viện". Nhấp vào "+" để thêm thư viện. Cuộn xuống cuối danh sách và chọn "libxml2.dylib". Điều đó sẽ thêm thư viện libxml2 2 vào dự án của bạn… nhưng hãy đợi.

Thiết lập dự án

Bây giờ bạn phải cho dự án của bạn biết nơi để tìm kiếm nó ba lần nữa.

Chọn tab "Cài đặt bản dựng". Cuộn xuống phần "Liên kết". Trong các cột của dự án, hãy nhấp đúp vào hàng "Cờ trình liên kết khác". Nhấp vào "+" và thêm "-lxml2" vào danh sách.

Còn nữa.

Trong cùng một tab, cuộn xuống phần "Đường dẫn tìm kiếm". Dưới cột dự án của bạn trong hàng "Đường dẫn tìm kiếm khung", hãy thêm "/usr/lib/libxml2.dylib".

Trong "Đường dẫn tìm kiếm tiêu đề" VÀ hàng "Đường dẫn tìm kiếm tiêu đề người dùng", hãy thêm "$ (SDKROOT) / usr / include / libxml2". Trong hai trường hợp cuối cùng đó, hãy đảm bảo rằng đường dẫn đó được nhập trong Gỡ lỗi VÀ Bản phát hành.

Sau đó. Trong Menu "Sản phẩm", chọn "Dọn dẹp".

Điều này đang hoạt động và cả Xcode5 nữa! Cảm ơn bạn!


1
Điều này không hoạt động trong Xcode 5.0.2. Tôi đã thực hiện những thay đổi trên đối với dự án của mình, nhưng không may mắn. Bạn có thể giúp tôi những gì cần phải làm.
Ganesh

1

Không đặt libxml2.dylib trong thư mục framework, hãy đặt nó dưới thư mục gốc ngay dưới thư mục gốc (Biểu tượng màu xanh lam trên cùng bên trái)

Sau đó nhấp vào Dự án (biểu tượng màu xanh lam ở trên cùng bên trái), ĐI đến Cài đặt xây dựng, trong hộp tìm kiếm, nhập "Đường dẫn tìm kiếm tiêu đề" và sau đó thêm "$ (SDKROOT) / usr / include / libxml2" này

Mã này giải quyết vấn đề của tôi hy vọng nó sẽ giúp bạn khắc phục điều này


1

@Aqib Mumtaz - Tôi đã làm cho nó hoạt động bằng cách làm theo các hướng dẫn trong ghi chú của Parris ở trên có tựa đề "Thêm libxml2 trong Xcode 4.3 / 5/6". Bước sử dụng Đường dẫn Tìm kiếm Khung không hoạt động và trình biên dịch phàn nàn. Dù sao thì cũng sẽ được khen lớn cho anh bạn đó!

Tôi đang sử dụng Xcode 6.2b3

Bất kể phiên bản Xcode nào bạn đang sử dụng đều có lỗi. Đừng luôn cho rằng lỗi biên dịch là có thật. Có nhiều khi nó không đi theo đường dẫn tìm kiếm tiêu đề và không tìm thấy bao gồm được liệt kê rõ ràng. Tệ hơn nữa, các lỗi phát sinh có xu hướng hướng bạn theo nhiều hướng khác nhau, vì vậy bạn lãng phí rất nhiều thời gian để làm mất tập trung. Với điều đó đã nói ...

Đề xuất các bước cho em bé bằng cách bắt đầu với điều này chính xác ...:

  1. tạo một dự án Mac OS X Cocoa một cửa sổ có tên là "Bench Test"
  2. thêm XpathQuery vào thư mục nguồn dự án của bạn trực tiếp trong Finder
  3. nhấp vào biểu tượng thư mục nhỏ dưới nút đóng màu đỏ của cửa sổ dự án
  4. kéo XpathQuery (thư mục nếu bạn chứa nó) vào nội dung dự án ở bên trái màn hình cửa sổ dự án
  5. kéo /Application/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib vào nội dung dự án của bạn ở dưới cùng. Điều này sẽ thêm nó vào "Giai đoạn xây dựng" -> "Liên kết nhị phân với thư viện" một cách dễ dàng
  6. nhấp vào biểu tượng dự án "Kiểm tra điểm chuẩn" trong cột tài sản dự án, trên cùng bên trái
  7. tìm kiếm "Cờ trình liên kết khác" trong "Cài đặt bản dựng"
  8. thêm "-lxml2" (sans "") vào "Cờ trình liên kết khác" trong cột biểu tượng dự án "Kiểm tra điểm chuẩn"
  9. tìm kiếm "tìm kiếm tiêu đề" trong "Cài đặt bản dựng"
  10. thêm "$ (SDKROOT) / usr / include / libxml2" (sans "") vào "Đường dẫn tìm kiếm tiêu đề" trong cột biểu tượng dự án "Kiểm tra điểm chuẩn"
  11. thêm "$ (SDKROOT) / usr / include / libxml2" (sans "") vào "Đường dẫn tìm kiếm tiêu đề người dùng" trong cột biểu tượng dự án "Kiểm tra điểm chuẩn"

Ghi chú:

  • Của tôi sẽ không hoạt động cho đến khi tôi thêm đường dẫn tìm kiếm đó vào cả "Đường dẫn Tìm kiếm Tiêu đề" và "Đường dẫn Tìm kiếm Tiêu đề Người dùng".
  • Để truy cập libxml2.2.dylib trong công cụ tìm, bạn sẽ cần phải nhấp chuột phải vào biểu tượng Xcode của mình và chọn "Hiển thị Danh sách Liên hệ Gói" (biên tập: thật là một hack .. nhồi nhét tất cả rác đó vào ứng dụng)
  • Hãy chuẩn bị để thay đổi libxml2.2.dylib được liên kết. Mã bên trong Xcode được sử dụng một cách có chủ đích để đảm bảo rằng Xcode nhận được thứ gì đó mà nó biết và trên lý thuyết đã được kiểm tra. Bạn có thể muốn sử dụng dylib trong hệ thống sau (đọc trong chủ đề này)
  • Vì tôi đang sử dụng Xcode 6.2b3, tôi có thể có libxml2.2.dylib mới hơn. Của bạn có thể được đặt tên hơi khác nhau. Chỉ cần tìm kiếm thư mục nào đó bắt đầu bằng "libxml" và kết thúc bằng ".dylib" và đó sẽ là nó. Cũng có thể có một bí danh như "libxml2.dylib". Đừng sử dụng nó ngay lập tức vì việc giải quyết một bí danh sẽ thêm một biến khác vào phương trình Xcode "những gì có thể có lỗi".
  • Vì lợi ích của sự tỉnh táo, tôi tạo bí danh của các thư viện bên ngoài, đổi tên chúng để cho biết chúng là thư viện nào và giữ chúng ở cùng cấp với tệp dự án trong Finder. Nếu họ thay đổi vị trí, thay đổi tên, v.v., bí danh sẽ có trong đó là Nhận thông tin, đường dẫn đầy đủ của tệp gốc cho công việc thám tử sau này để khiến dự án biên dịch và liên kết lại. (các liên kết tượng trưng bị hỏng quá dễ dàng và không tự nhiên đối với Mac)
  • Điều cuối cùng và rất quan trọng, hãy xem http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html nơi bạn có thể tải xuống XpathQuery và có thêm một số tiện ích.

hi vọng điêu nay co ich.

Nếu bạn tình cờ phát triển một thứ gì đó cho Cựu chiến binh, hãy nói một ứng dụng iPhone / iPad hoặc Mac và đang làm việc chống lại một thứ gọi là "MDWS" hoặc "VIA" là giao diện dựa trên SOAP đối với hệ thống hồ sơ y tế ... vui lòng liên hệ với tôi


0

Tôi đã giải quyết trong ba bước inXcode 8.0 + Unit Test Project

1) Tôi đã thêm tệp libxml vào Build Phases. Theo liên kết này

2) Tôi đã thêm Cờ liên kết khác-ObjC(Đối với cả mục tiêu dự án và dự án thử nghiệm)

3) Tôi thiết lập Đường dẫn tìm kiếm tiêu đề"${SDKROOT}/usr/include/libxml2"(Đừng quên dấu ngoặc kép ở hai bên) (Đối với cả mục tiêu dự án và dự án thử nghiệm)

Một trong số họ sẽ giải quyết vấn đề. Nếu không, bạn phải áp dụng cả ba điều trên.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.