2012-02-28 41 views
10

Tôi muốn sử dụng thư viện xuất sắc stringencoders trong ứng dụng iOS. Đó là một thư viện c khá điển hình, với một kịch bản cấu hình được tạo ra bởi autoconf và một makefile.Cross-biên dịch thư viện c mã nguồn mở cho iOS và XCode 4.3

Những gì tôi muốn làm là biên dịch các phiên bản arm7 và i386 trên Mac OSX và sau đó sử dụng lipo để tạo một nhị phân chất béo.

Tôi đang gặp khó khăn trong việc tìm hiểu cách thuyết phục công cụ xây dựng để tạo các tệp nhị phân cụ thể cho nền tảng của mình. Có một vài bài viết trên mạng và thậm chí một vài kịch bản nhưng hầu hết chúng được nhắm mục tiêu ở XCode 4.2 và không hoạt động với 4.3.

Có vẻ như có thể tạo một tập lệnh xây dựng khá chung chung có thể phát độc đáo với cấu hình và thực hiện nhưng tôi không biết phải bắt đầu từ đâu.

Bạn đã thực hiện thành công mọi thứ như thế này chưa? Tôi rất thích một số gợi ý!

BTW: 'nhập tất cả mã nguồn vào dự án của bạn' KHÔNG phải là giải pháp khả thi. Bằng cách đó nằm điên rồ.

Cảm ơn.

+0

Chỉ cần được rõ ràng, những gì công cụ Bạn đang tìm kiếm một giải pháp cho? Có vẻ như bạn đang tìm kiếm giải pháp XCode 4.3, nhưng điều đó không rõ ràng. –

+0

Cảm ơn, tôi đã thay đổi tiêu đề để làm rõ – Darren

+0

Trừ khi bạn không biết trình biên dịch chéo là gì, điều này nghe có vẻ giống như cấu hình vấn đề cụ thể cho Xcode 4.3. – Garen

Trả lời

3

Tôi đã chuyển một số thư viện C mã nguồn mở sang iOS (xem iOS Ports). Tôi đã tìm thấy cách đáng tin cậy nhất để chuyển một thư viện là xây dựng một dự án Xcode mới với một mục tiêu xây dựng cho một Thư viện iOS tĩnh. Điều quan trọng cần lưu ý là Apple sẽ không cho phép Ứng dụng iOS của bạn chứa các thư viện động nếu bạn định phân phối ứng dụng của mình trên cửa hàng iTunes App, vì vậy bạn sẽ không thể sử dụng thư viện FAT.

Đây là những bước tôi thường làm theo khi porting các thư viện để iOS mà thường được xây dựng với các Autotools GNU:

  1. Run ./configure với cờ thích hợp trên OS X.
  2. Xác minh rằng thư viện được xây dựng một cách chính xác trên OS X sử dụng make.
  3. Tạo dự án Xcode mới bằng mẫu Thư viện tĩnh iOS.
  4. Thêm cấu hình.h từ lần chạy cấu hình trước đó vào dự án Xcode.
  5. Đọc tệp tự động (Makefile.am) và thêm nguồn được tham chiếu trong mục tiêu của trình tạo ô tô vào mục tiêu Xcode cho thư viện tĩnh.
  6. Sao chép cờ CPP (tức là -DHAVE_CONFIG_H) từ tệp tự động vào cài đặt bản dựng trong Xcode.
  7. Biên dịch trong Xcode và bắt đầu chạy các lỗi (thường bằng cách thêm tiêu đề bị thiếu bao gồm đường dẫn hoặc tệp nguồn bị thiếu).

Cấu trúc thư mục Tôi thường sử dụng như sau:

project/ 
project/ported-project.xcodeproj 
project/project-x.x.x.tar.gz 
project/project-x.x.x 
project/project -> project-x.x.x 

Tôi biết điều này không phải là chính xác những gì bạn yêu cầu trong câu hỏi của bạn, tuy nhiên nó là phác thảo sơ bộ các bước tôi đã sử dụng cho năm cho các thư viện porting. Lợi ích của việc tạo một Xcode thực tế để biên dịch thư viện được chuyển đổi là nó giúp việc tích hợp thư viện vào nhiều ứng dụng Xcode iOS dễ dàng hơn.

Nếu bạn cần làm rõ hoặc hướng dẫn chi tiết, cho tôi biết và tôi "sẽ cố gắng viết lên hướng dẫn bao quát hơn và cập nhật câu trả lời của tôi.

0

Mục tiêu C là một siêu của C vì vậy tôi ngạc nhiên khi mã không hoạt động trực tiếp ra khỏi hộp trong XCode 4. Bạn có bỏ sót điều gì đó không? chỉ gợi ý

1

Bạn có thể thêm trực tiếp các tệp nguồn (ví dụ: tệp .c) vào dự án của mình không?

0

Tạo tệp dự án của bạn bằng cách sử dụng gyp: http://code.google.com/p/gyp/ Tôi sử dụng tệp này để chia sẻ thư viện giữa win/osx/ios và linux (pi).

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