2009-03-26 25 views
8

Tôi đang bắt đầu một dự án nền tảng nguồn mở trong C++. Môi trường phát triển của tôi là Linux. Có thể có các nhà phát triển khác cũng phát triển từ các nền tảng khác nhau. Vì vậy, tôi cần một số trợ giúp trong việc bắt đầu với cấu hình và thiết lập môi trường phát triển, để tất cả các nhà phát triển từ nhiều nền tảng có thể phát triển dễ dàng.Thực tiễn tốt nhất cho ứng dụng mã nguồn mở di động C++

Sau đây là câu hỏi của tôi

  1. biên dịch: Tôi có kế hoạch sử dụng g ++ và nghe nói rằng nó là nền tảng chéo. Đó có phải là một lựa chọn tốt?
  2. Tạo các tệp: Tôi đã thấy Mã :: Blocks trình chỉnh sửa và nó tạo các tệp đang hoạt động và bạn không phải viết một tệp theo cách thủ công. Đây có phải là phương pháp hay nhất hay tôi cần tạo các tệp?
  3. Các cài đặt khác cần được chú ý khi phát triển các ứng dụng đa nền tảng là gì?

Bạn nghĩ gì?

Sửa

Cảm ơn câu trả lời. Một câu hỏi nữa.

Bạn có tạo makefiles bằng tay không? Hay có công cụ nào có thể tạo ra nó?

+0

Làm thế nào đa nền tảng? (như trong, nền tảng nào). GUI, hoặc không phải GUI? –

+0

Một phần sẽ là thư viện được chia sẻ. Và tất nhiên, GUI sẽ ở đó. –

Trả lời

7

Điều quan trọng nhất để dự án của bạn bắt kịp là tính di động. Nó sẽ dễ dàng để xây dựng & chạy cho tất cả mọi người.

GCC (g ++) thực sự là trình biên dịch lựa chọn. Nó đến từ thế giới mã nguồn mở và do đó được chấp nhận rộng rãi nhất bởi nó.

Tuy nhiên, một Makefile đơn giản sẽ không cắt nó. Tạo ra nó bằng cách sử dụng CodeBlocks hoặc bất kỳ IDE nào khác có vấn đề: Do nền tảng của họ, các nhà phát triển khác có lẽ sẽ phải tự tạo ra, nhưng không nhất thiết phải có CodeBlocks trong tay, hoặc chỉ không muốn sử dụng nó.

Có một số hệ thống xây dựng đa nền tảng khác nhau, không có tính thuyết phục về IDE. Một số người trong số họ tạo Makefiles, những người khác không sử dụng làm nhưng xây dựng trên của riêng mình.

  • Hệ thống xây dựng được áp dụng rộng rãi nhất là Autotools. Tuy nhiên, rất khó để học hỏi, lộn xộn, và một nỗi đau tổng thể trong ass.
  • Ngoài nhiều lựa chọn khác, Tôi khuyên bạn nên Waf. Nó được chứng minh bởi một số dự án mã nguồn mở lớn hơn, XMMS2 là một ví dụ tốt (trong khi không phải là một dự án rất phổ biến, nó có một xây dựng lớn với rất nhiều plugin và xây dựng trên rất nhiều nền tảng bao gồm OS X và Windows). Trong khi waf không được áp dụng rộng rãi, nó có nghĩa là được vận chuyển với nguồn và dễ thiết lập. Đề nghị của tôi cho bạn.

Edit: để bắt đầu với dự án mã nguồn mở của bạn, tôi cũng giới thiệu this book bởi Karl Fogel (có sẵn để đọc trực tuyến). Chúc vui vẻ!

+0

Cảm ơn câu trả lời. –

1

Trình biên dịch: Tôi dự định sử dụng g + + và nghe nói rằng đó là nền tảng chéo. Đó có phải là một lựa chọn tốt?

Có, nhưng phiên bản nào? Bạn có danh sách các sự cố đã biết cho phiên bản bạn định sử dụng không?

Tạo tệp: Tôi đã xem Mã :: Trình chỉnh sửa khối và nó tạo các tệp đang chạy và bạn không phải viết một tệp thủ công. Đây có phải là phương pháp hay nhất hay tôi cần tạo các tệp?

Lựa chọn cổ điển. Bạn có thể sẽ cần phải tinh chỉnh chúng khi dự án phát triển.

Các cài đặt khác cần được chú ý khi phát triển các ứng dụng đa nền tảng là gì?

Cổng g ++/makefile có sẵn cho nền tảng chính bao giờ. Vì vậy, một khi bạn đã chắc chắn rằng bạn không sử dụng bất kỳ nền tảng cụ thể API hoặc xây dựng bạn nên được tốt để đi.

Điều gì sau đây?

  • Thư viện của bên thứ ba? Hãy chắc chắn rằng bạn không rơi cho một nền tảng cụ thể.
  • vấn đề cấp phép (mã của bạn và những người khác)
  • SCM
+0

Tôi có phiên bản G ++ mới nhất. Được cài đặt bằng cách sử dụng trình quản lý gói trong ubuntu. –

+0

Tôi thực sự không cần phải biết, nhưng bạn nên :) Chỉ cần chắc chắn rằng bạn lưu ý xuống các phiên bản của các công cụ bạn đang sử dụng. Có thể tiết kiệm rất nhiều đau buồn trong những ngày tới. – dirkgently

2

Tùy thuộc vào nền tảng cụ thể, Qt có thể chứa câu trả lời. Đặc biệt với giấy phép mới.

+0

Qt và qmake. Tôi cũng khuyên bạn nên nó trên wxWidgets, được tuyên truyền bởi CodeBlocks. – ypnos

2
  • Bắt đầu xây dựng trên nhiều nền tảng ngay bây giờ: nó hiển thị vấn đề sớm.
  • Nếu bạn chỉ quan tâm đến Linux và Mac OS X, thì g ++ sẽ tốt. Có nhiều IDE và các hệ thống dựng sẵn có sẵn. Bạn có thể muốn xem xét sử dụng autotools để trợ giúp với hỗ trợ cấu hình.
  • Nếu bạn muốn nhắm mục tiêu Windows, nó sẽ phức tạp hơn một chút. Bạn có thể sử dụng Cygwin và/hoặc mingw, nhưng đôi khi có thể phức tạp. Các dự án khác nhau sử dụng các hệ thống xây dựng và cấu hình đa nền tảng như CMake để xử lý nhiều vấn đề cho chúng.
3

Các GNU C++ là một sự lựa chọn khá tốt cho công việc crossplatform, ngoại trừ việc trên Windows chỉ là một phiên bản tương đối cũ (3.4) được hỗ trợ nguyên bản. Công việc đang được tiến hành để chuyển một chuỗi 4.x sang Windows, nhưng cho đến nay nó chưa sẵn sàng cho thời gian chính.

Thay vì tập trung vào trình biên dịch để sử dụng, thay vào đó tôi sẽ tập trung vào ngôn ngữ để sử dụng. Viết tiêu chuẩn ANSI C++ sẽ đi một chặng đường dài hướng tới việc tạo nền tảng mã của bạn. Càng nhiều càng tốt, ẩn hành vi cụ thể theo nền tảng phía sau bộ công cụ tốt, chẳng hạn như Qt.

Đối với môi trường xây dựng đa nền tảng, điều này có thể phụ thuộc vào bộ công cụ bạn sử dụng. Qt có QMake, tương đối tốt. CMake là một lựa chọn hấp dẫn khác. Tôi sẽ tránh Autotools, vì nó có tính di động rất kém bên ngoài UNIX - sử dụng Autotools trên Win32 thường là sự đau khổ của damned.

Cuối cùng, bắt đầu làm việc trên nhiều nền tảng ngay bây giờ. VMware là vô giá đối với một cái gì đó như thế này. Nhận mã của bạn để biên dịch trên Linux, trên FreeBSD và trên Windows. Nếu bạn có thể đạt được ba mục tiêu đó, việc chuyển sang các nền tảng khác sẽ dễ dàng hơn rất nhiều trong tương lai.

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