2012-05-03 38 views
5

Là nhà phát triển MAc mới đến từ VS Tôi không thực sự 'có' khung là gì. Nếu tôi thêm một khung cho dự án của tôi, điều này có tự động có nghĩa là các tiêu đề phải được tìm thấy khi tôi làm #include <SomeFile.h>?XCode3 - mối quan hệ giữa Đường dẫn Tìm kiếm Thư viện và Khung dự án

Tôi dường như đang tìm trong một số trường hợp tôi cũng phải thêm đường dẫn tìm kiếm tiêu đề. Điều đó có nghĩa là khung làm việc không hoạt động đúng không?

Trả lời

3

Nếu khuôn khổ được viết chính xác, nó chứa các tiêu đề cũng như tệp liên kết (nhị phân) thực tế. Trình biên dịch (GCC trước đây, LLVM-clang gần đây) nhận ra các đường dẫn khung và tự động biết nơi để tìm kiếm các tiêu đề khung công tác. Tuy nhiên, có một số trường hợp góc:

  1. Nếu bạn không thêm khung, nhưng thực sự là thư viện Unix truyền thống (libsqlite3.dylib, libxml2.dylib, vv) từ/usr/lib. Sau đó, nó có thể là trường hợp thư viện có một đường dẫn riêng biệt (không chuẩn); điều này là phổ biến, ví dụ, trong trường hợp glib. Bạn phải thêm /usr/include/glib-2.0 vào đường dẫn tìm kiếm tiêu đề trong trường hợp này.
  2. Trường hợp ngược lại: khi bạn gặp phải một số khung "Ô" (ví dụ: Âm thanh lõi được chia thành các phụ ảnh nhỏ, chẳng hạn như AudioToolbox.framework vv), thì khung cụ thể đó không chứa một liên kết động thư viện, chỉ tiêu đề.

Tôi hy vọng điều này sẽ hữu ích.

4

Theo định nghĩa của Apple Conceptual Documentation:

Một khuôn khổ là một thư mục theo cấp bậc mà đóng gói chia sẻ nguồn lực, chẳng hạn như một thư viện tự động chia sẻ, các file nib, tập tin hình ảnh, dây cục bộ, các file header, và tài liệu tham khảo tài liệu trong một gói đơn .

Nói cách khác, nó là một tập hợp các tài nguyên có thể được sử dụng bởi một hoặc nhiều ứng dụng, và nó không phải là một ứng dụng của chính nó.

chi tiết bởi các Apple Conceptual Documentation:

Bạn bao gồm tập tin tiêu đề khung trong mã của bạn bằng cách sử dụng chỉ thị #include . Nếu bạn đang làm việc trong Mục tiêu-C, bạn có thể sử dụng chỉ thị #import thay vì chỉ thị #include. Hai chỉ thị có cùng kết quả cơ bản. nhưng chỉ thị #import đảm bảo rằng cùng một tệp tiêu đề không bao giờ được bao gồm nhiều lần. Có hai cách để bao gồm tiêu đề khung:

#include <Framework_name/Header_filename.h> 
#import <Framework_name/Header_filename.h> 

Trong cả hai trường hợp, Framework_name là tên của khuôn khổ này và Header_filename là tên của một tập tin tiêu đề trong khuôn khổ đó hoặc khách hàng với dòng subframeworks.

Khi bao gồm tệp tiêu đề khung, nó là truyền thống để bao gồm chỉ tệp tiêu đề khung chính. Tệp tiêu đề chính là tệp tiêu đề có tên khớp với tên của khung.Ví dụ: khung Sổ Địa chỉ có tệp tiêu đề chính có tên AddressBook.h.

Để bao gồm khung tùy chỉnh:

Nếu liên kết dự án của bạn để khuôn khổ mà không có trong bất kỳ các địa điểm tiêu chuẩn, bạn phải xác định rõ ràng vị trí của rằng khuôn khổ trước Xcode có thể xác định vị trí của nó tệp tiêu đề. Để chỉ định vị trí của khung như vậy, hãy thêm thư mục có chứa khung vào “Framework Search Paths” option of your Xcode project. Xcode chuyển danh sách các thư mục này đến trình biên dịch và liên kết , cả hai đều sử dụng danh sách để tìm kiếm các tài nguyên khung công tác.

Các vấn đề liên quan