2011-01-27 33 views
14

Chúng tôi có một ứng dụng toán học/khoa học để hiển thị protein được viết bằng C++ sử dụng OpenGL. Nó được viết trong vài năm qua và sử dụng rộng rãi các tính năng C++ 0x được tìm thấy trong GCC 4.4 trở lên. (Nó cũng biên dịch với Microsoft Visual C++ 10 trên Windows, hỗ trợ nhiều tính năng C++ 0x.)Cách biên dịch mã C++ 0x cho giả lập iPhone và iPhone

Chúng tôi muốn phát hành phiên bản iPhone/iPad, vì vậy chúng tôi cần chuyển nó từ Linux/Windows sang iPhone. Chúng tôi đã chuyển các chương trình tương tự với rất ít nỗ lực - thêm một số tệp mục tiêu C và thực hiện - tuy nhiên, do các tính năng C++ 0x được sử dụng ở đây, chúng tôi gặp sự cố. Xcode trên OS X sử dụng GCC 4.2.1 (từ năm 2007) trước khi hỗ trợ C++ 0x của GCC. Có vẻ như một bước tiến lớn để viết lại tất cả mã C++ 0x tuyệt đẹp này để không sử dụng các tính năng C++ 0x, và chúng tôi thực sự không muốn duy trì một codebase backported khi di chuyển về phía C++ 0x là rõ ràng.

Có cách nào để sử dụng GCC 4.5 (hoặc 4.6, từ SVN) để nhắm mục tiêu giả lập iPhone và iPhone không? Nếu vậy, làm thế nào? Tốt hơn là, từ bên trong Xcode, vì chức năng click-and-run/click-and-debug rất hữu ích. Nó sẽ là tuyệt vời để có thể nhập "GCC 4.6" trong "C/C++ Phiên bản trình biên dịch" hộp trong Xcode và chỉ có tất cả mọi thứ làm việc.

(Ngoài ra, phiên bản đầu tiên của Clang - kể từ hôm qua! - hỗ trợ một số tính năng C++ 0x, nhưng chưa hỗ trợ các biểu thức lambda vì vậy có thể là do cho chúng tôi bây giờ.)

+0

+1 để hình dung protein ninja tuyệt vời trong điện thoại :) –

+1

Cũng sẽ quan tâm đến cách sử dụng C++ 0x trên iphone v.v. – Colen

+1

Bạn có thể kiểm tra cách PLBlocks thực hiện điều đó. Họ có một thay thế chuỗi công cụ và thời gian chạy thả xuống cung cấp các khối cho iOS 2.2+ và Mac OS 10.5: http://code.google.com/p/plblocks/ –

Trả lời

5

Tắt đầu của tôi, tôi sẽ nói rằng có lẽ không phải là một cách rất sạch sẽ hoặc dễ dàng để làm điều này, cho đến khi Apple chính thức hỗ trợ nó. Có thể bạn đã biết điều này, nhưng lý do Xcode sử dụng phiên bản GCC cũ hơn là Apple thực hiện các sửa đổi mở rộng cho chuỗi công cụ GNU và phát hành phiên bản của họ dưới APSL (là incompatible với GPL). Vì vậy, đối với hầu hết các phần, bạn có thể xem xét phiên bản GCC của họ là một ngã ba hoàn chỉnh. Tôi đã gặp phải vấn đề này khi cố gắng chuyển phiên bản Apple của chuỗi công cụ sang Linux. Tôi đã có một số thành công hạn chế, nhưng nó không phải là một cam kết nhỏ ...

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