2009-01-14 35 views
12

Tôi đang làm việc trên một dự án có chứa hai mục tiêu. Một cho xây dựng một khung để sử dụng trong phát triển Mac và một để tạo ra một thư viện tĩnh để sử dụng trong phát triển iPhone.Làm thế nào để bạn tạo các dự án Xcode lai cho Mac & iPhone?

Trong mã phổ biến, không có vấn đề gì với #ifdef giữa các nền tảng, nhưng tôi không thể có được mục tiêu và quyền phụ thuộc.

Câu hỏi đầu tiên là SDK cơ sở nào sẽ sử dụng? Ví dụ nếu tôi sử dụng Mac 10.5 tôi không thể bao gồm khung UIKit (nó được đánh dấu màu đỏ và không hiển thị các tệp tiêu đề nếu tôi mở rộng nó). Ngay cả khi mục tiêu thực sự liên kết với nó được xây dựng cho hệ điều hành iPhone ..

Câu hỏi khác là, về Foundation.framework, hoặc những thứ như Security.framework? Làm thế nào để đối phó với chúng, vì tôi chỉ có thể bao gồm một trong các phiên bản (Mac hoặc iPhone SDK) ...

Bất cứ ai có lời khuyên cho tôi? Tôi muốn có một cấu trúc dự án sạch sẽ và chắc chắn cùng một codebase cho cả hai mục tiêu ... Các cấu hình có phải là cách để đi không?

Cảm ơn!

Trả lời

5

Chỉ cần để cho bạn biết:

tôi đã kết thúc có một dự án với các mục tiêu khác nhau cho các nền tảng khác nhau. Nhưng tôi đã không bao gồm khuôn khổ tôi phụ thuộc vào trong những mục tiêu riêng của mình, mà là thêm chúng vào Flags Linker khác xây dựng thiết lập:

-framework Foundation -framework Security 

Bạn có thể kiểm tra xem nó ra trong dự án tôi đã làm trên github .

-3

Bạn không thể sử dụng PIMPL idiom? Và/hoặc có một tiêu đề chung cho cả hai nhưng sử dụng tệp triển khai khác nhau dựa trên kiến ​​trúc đích hoặc SDK?

3

Có lẽ cách dễ nhất (về những gì bạn phải làm) cách làm là hai dự án (bạn có thể tóm tắt dự án phụ của dự án ô giả nếu bạn thích) sử dụng cùng một tập hợp nguồn —một mình nhắm mục tiêu Mac OS X, hệ điều hành iPhone khác.

Ngoài ra, bạn không thể tạo hai mục tiêu riêng biệt trong cùng một dự án và thay đổi “SDK cơ sở” từ tab “Xây dựng” của cửa sổ “Nhận thông tin” cho mỗi mục tiêu? Tôi không có Xcode trước mặt tôi để kiểm tra, nhưng tôi nghĩ nó sẽ cho phép bạn làm điều này.

(Tất nhiên, với một trong hai cách tiếp cận, bạn có thể thêm một mục tiêu thứ ba: một thư viện tĩnh cho mô phỏng, trong đó sẽ có ích khi kiểm tra!)

+1

Đó chính là vấn đề. Có hai mục tiêu với các SDK cơ sở khác nhau trong đó một là Mac OS X sẽ không cho phép tôi bao gồm khung công tác UIKit. Và vấn đề với khung bảo mật có cùng tên trên cả hai nền tảng cũng vẫn tồn tại. Nhưng ý tưởng về "dự án ô" có thể không sao. – stigi

3

Nó thực sự không phải là xấu. Chỉ cần tạo mục tiêu thứ hai của loại thích hợp và sau đó thay đổi cài đặt bản dựng "Cơ sở SDK". Sau đó, hãy đảm bảo thêm tất cả các tệp cần thiết. Nếu bạn muốn xây dựng cả hai cùng một lúc, hãy tạo mục tiêu tổng hợp. Để xem ví dụ thực tế, hãy xem dự án của tôi SSPromise.

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