2009-08-06 36 views
12

Hệ điều hành chính của tôi là Linux, nhưng bây giờ tôi buộc phải viết một số ứng dụng C++ cho Windows. Tôi đã suy nghĩ về việc phát triển trên hộp Linux với các thư viện nền tảng chéo như WxWidgets (và một số quan tâm về các phụ thuộc nền tảng khác) và sau đó kết quả biên dịch kết quả để mingw mục tiêu.Phát triển các ứng dụng Windows trên Linux?

Vì vậy, các công cụ tôi đang nghĩ đến việc sử dụng là

  • g ++ cho biên soạn và cross-biên dịch.
  • CMake
  • WxWidgets
  • ??? làm bao bì cửa sổ cài đặt
  • rượu vang để thử nghiệm của phiên bản windows

Và câu hỏi của tôi:

  1. một số cài đặt miễn phí (hoặc thậm chí tốt hơn mã nguồn mở) cho Windows mà tôi có thể sử dụng là gì để tạo gói cuối cùng? Nó sẽ giúp ích nếu gói có thể được chuẩn bị từ Linux.

  2. Liệu Wine có đủ để kiểm tra phiên bản được biên dịch chéo không (sau khi tất cả logic được kiểm tra trong phiên bản Linux)?

  3. Đây có phải là một ý tưởng hay không? :-)

+6

Nếu bạn có một bản sao Windows tiện dụng, việc chạy một phiên bản VirtualBox của nó cũng không thể bị tổn thương khi thử nghiệm. – Amber

+0

Để thử nghiệm ít nhất Virtual Box là tốt, tất nhiên tốt nhất là cài đặt Windows nó tự .. Hãy thử viết ứng dụng đó trong Windows. Tôi thích linux của tôi. nhưng nếu toà nhà của bạn cho Windows. Lập trình trong cửa sổ của nó tốt nhất bạn có thể làm (cho các ứng dụng windows của khóa học). –

Trả lời

15

Kiểm tra Qt quá. Đó là một khung công tác đa nền tảng rất phong phú.

Đối với người cài đặt, tôi rất muốn giới thiệu WiX.

Để thử nghiệm, sẽ tốt hơn nếu sử dụng một số loại ảo hóa như VirtualBox của Sun Microsystems. Tôi tin rằng bạn có thể sử dụng một phiên bản dùng thử của Windows hoặc Windows 7 RC, đó là miễn phí để sử dụng cho đến tháng Ba năm 2010.

2
    • InstallJammer cho phép bạn tạo các trình cài đặt cho * nix và Windows. Tôi không chắc liệu nó có cho phép tạo các trình cài đặt chéo hay không (tức là tạo trình cài đặt Windows từ * nix). Một lựa chọn thương mại với bản demo có sẵn để thử là Bitrock InstallBuilder.
    • Có thể ... Nếu bạn có giấy phép Windows, đề xuất của Dav sẽ tốt hơn.
    • Nếu nó giúp bạn làm việc tốt hơn/hiệu quả hơn & một cách hiệu quả, chắc chắn.

Hãy để chúng tôi đăng bài về cách thức của bạn - điều này thật thú vị.

2

2) Không, rượu như nó nói không phải là Windows, bạn không thể kiểm tra một cách đáng tin cậy như vậy. Tôi đề nghị chạy một máy ảo trong Linux của bạn, điều đó sẽ làm cho công việc của bạn mượt mà hơn nhiều.

3) Có thể, đối với khía cạnh đồ họa, tôi cũng sẽ xem xét GTK+ được sử dụng cho GIMP và hoạt động tương tự trên Windows và Linux.

2

Bạn ngụ ý rằng các ứng dụng chỉ dành cho Windows chứ không phải nền tảng chéo, trong trường hợp này tôi nghĩ câu trả lời là 3. - Đây thực sự không phải là ý tưởng hay - hãy vượt qua phần còn lại.

Lý do là bạn sẽ phải thử rộng rãi ứng dụng dưới Windows dù sao, trực tiếp hoặc trong một cá thể ảo. Điều đó khiến bạn phát triển tốt hơn theo hệ điều hành đích vì bạn có nhiều khả năng tạo ra một ứng dụng tốt hơn - cả việc bắt các lỗi trước đó và kỹ lưỡng hơn và đảm bảo ứng dụng của bạn 'hoạt động' cho người dùng của bạn. Tôi chắc chắn sẽ không tin tưởng chỉWine.

Tôi không phải là người hâm mộ nhiều tiện ích đa nền tảng. Giống như các ứng dụng Java, bạn thường kết thúc với một cái gì đó mà không khá nhìn đúng, và giống như khoảng cách kỳ lạ có thể đủ để làm cho ứng dụng của bạn có mùi xấu đối với một phần lớn người dùng của bạn. Thậm chí ở mức độ trừu tượng hơn một chút, các ứng dụng của mỗi hệ điều hành có một cảm giác hơi khác nhau về cách chúng hoạt động và rất có thể bạn sẽ kết thúc với một ứng dụng Windows giống như một ứng dụng Windows. .

Vì vậy, có, chắc chắn có thể làm điều này, nhưng có lẽ không phải là cách tiếp cận tối ưu từ quan điểm về chất lượng của sản phẩm cuối cùng. Để làm như vậy sẽ cho bạn một cái gì đó của một tàn tật với những gì bạn sản xuất và tôi muốn nói đó là khả năng bù đắp sự tiện lợi cho bạn của việc sử dụng một nền tảng Linux. Trên thực tế, tôi sẽ ngạc nhiên nếu bạn quản lý ngay cả điều đó bởi vì tôi cá rằng bạn sẽ dành nhiều thời gian hơn với các tiện ích cố gắng tinh chỉnh chúng để chúng hoạt động ngay trong Windows thực hơn bạn sẽ thu được từ việc sử dụng Windows không quen thuộc bộ công cụ.

3

Trước hết, có ý kiến ​​hay. Tôi có một số dự án mà tôi duy trì phiên bản Windows của họ theo cách này.

Trong mọi trường hợp, tôi khuyên bạn nên kiểm tra sản phẩm cuối cùng trên máy tính Windows. Nếu bạn có giấy phép cho hệ điều hành Windows, bạn có thể sử dụng ảo hóa để thực hiện các thử nghiệm cuối cùng.

Tôi khuyên bạn nên sử dụng Autotools có hỗ trợ biên dịch chéo rất tốt và hoạt động "nguyên bản" với trình biên dịch chéo.

Dưới Debian ví dụ chạy

./configure --host=i586-mingw32msvc 

này sẽ tạo ra đúng chéo biên soạn makefile như thể đây là dự án Unix.

Trong mọi trường hợp, tôi khuyên bạn nên phát triển phiên bản nền tảng chéo và thử nghiệm theo thời gian phiên bản Windows gốc bằng Wine/Windows bằng cách biên dịch chéo chúng.

+0

Đó có phải là bất lợi khi chúng tôi không thể sử dụng profilers không? Và nhiều hơn nữa nếu tôi hiểu chính xác các quy trình tối ưu hóa khác nhau đáng kể từ một hệ điều hành khác. Làm thế nào tôi có thể giải quyết vấn đề này? Hoặc là tốt hơn để có được một cái gì đó làm việc và bận tâm về tối ưu hóa tại 'thử nghiệm cuối cùng trong Windows', như bạn đã đề cập. – sjsam

1

Bạn sẽ cần giấy phép MSDN để truy cập tất cả vô số phiên bản Windows mà bạn muốn kiểm tra.

Bạn sẽ muốn cài đặt các hệ điều hành thử nghiệm trên máy ảo. Điều này có thể là trên máy tính để bàn Linux của bạn, nhưng một hộp chuyên dụng có thể tốt hơn.

Tôi không biết có bao nhiêu phiên bản Windows mà bạn định hỗ trợ, nhưng bạn chắc chắn nên thử nghiệm trên tất cả chúng. Rượu không phải là Windows, cũng không phải là Windows   XP giống như Windows   Vista, Windows   7, v.v.Ngoài ra còn có rất nhiều bản phân phối và ngôn ngữ khác nhau của Windows, một số trong đó bạn chắc chắn nên thử nghiệm.

Bằng mọi cách, hãy phát triển trên Linux. Bằng mọi cách, hãy sử dụng các tiện ích đa nền tảng (vâng, đây là những tiện ích tốt). Nhưng bạn vẫn cần giấy phép MSDN để có thể cài đặt các hệ điều hành thử nghiệm.

0

NSIS, Hệ thống cài đặt có thể được viết bằng Nullsoft có thể được biên dịch trong Linux và được sử dụng để tạo tệp nhị phân cài đặt cho Windows. Hướng dẫn là here. Đọc phần chung và phần để xây dựng trên POSIX.

Tôi sử dụng tính năng này để tạo lượt cài đặt cho một vài dự án.

+1

Tôi thực sự thấy NSIS là một điều xấu. Sau khi làm việc hoặc cố gắng làm việc với NSIS một vài ngày, tôi cảm thấy đau ở khắp mọi nơi ... Nó không báo cáo lỗi (chẳng hạn như viết nhật ký mọi thứ bao gồm lỗi và lệnh không thành công), bài tập thay đổi và việc sử dụng dường như không rõ ràng với tôi. Không có niềm vui thực sự. – Henning

+0

Tôi sử dụng thiết lập Inno và nó thực sự là tốt nhất. –

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