2010-07-21 36 views
11

Chúng tôi có một không phức tạp nhưng lớn (nghĩa là rất nhiều tệp) Visual Studio C++ Win32 Console được viết bằng tiêu chuẩn C++ 0x trong VS2010. Nó không sử dụng bất kỳ mã không chuẩn hoặc bất cứ điều gì (Hy vọng!).Cổng Visual Studio C++ sang Linux

Tôi hiện muốn chuyển nó sang Linux. Cách nào là cách nhanh nhất để thực hiện? autoconf? tạo tệp cũ? bất kỳ giải pháp nào khác?

+0

Tôi đã bỏ lỡ điều gì đó? C++ 0x là tiêu chuẩn * được đề xuất * cuối cùng tôi đã nghe và điều đó có nghĩa là mã của bạn ** là ** không chuẩn nếu được viết bằng cách sử dụng các tính năng từ đó. –

+0

thực sự C++ 0x là tên không chính thức của tiêu chuẩn mới được lập kế hoạch cho ngôn ngữ lập trình C++. – MBZ

+0

Có * kế hoạch * so với * đề xuất * biểu thị bất kỳ sự khác biệt nào về trạng thái phê chuẩn không? Tôi chỉ cảnh giác khi viết mã cho bất kỳ thứ gì cho đến khi nó là ** tiêu chuẩn **. –

Trả lời

7

Tôi sẽ sử dụng thường xuyên nhưng giữ cho nó đơn giản với các quy tắc mặc định càng nhiều càng tốt. Thêm phụ thuộc khi bạn đi cùng.

EDIT: Như trong bước tạm thời, hãy xây dựng nó bằng mingw để bạn có thể tránh toàn bộ vấn đề chuyển API cho đến khi bạn có một bản dựng làm việc trong cơ chế xây dựng mới của mình.

Nếu ứng dụng giao diện điều khiển của bạn gọi hàm win32 API thì bạn có thể lựa chọn giữa việc sửa đổi tất cả nguồn nơi được sử dụng hoặc viết mô-đun thực hiện các chức năng đó.

Trong nỗ lực chuyển đổi trước của loại này, tôi đã thử cả hai cách và cách sau dễ dàng hơn. Tôi đã kết thúc bằng văn bản chỉ có khoảng 18 đến 20 chức năng shim.Nó đã đủ thành công mà tôi đã kết thúc viết một lớp trừu tượng hệ điều hành được sử dụng trên nhiều dự án đơn giản cho phép tôi biên dịch trên Windows, Cygwin, Linux, VxWorks, v.v. với những thay đổi nhỏ nhặt cho một hoặc hai tệp.

(ps Bất kỳ sự quan tâm nào đến phiên bản mã nguồn mở của lớp trừu tượng hệ điều hành dựa trên C++? Tôi đã nghĩ đến việc phát hành phiên bản không bị cản trở cho thế giới nếu có đủ sự quan tâm. các dự án được nhúng.)

2

Bạn có thể xuất tệp tạo từ Visual Studio.

Cập nhật: Trên thực tế bạn có thể không được nữa, trừ khi bạn có VC6 nằm xung quanh

+0

thankx. bất kỳ hướng dẫn, liên kết, từ khóa nào? – MBZ

+0

Cập nhật như tôi đã sai. –

+2

Tôi không đưa ra mối đe dọa về VS hoặc C++, nhưng +1 cho hình đại diện hấp dẫn;) –

3

lẽ Hầu hết bạn không cần autoconf (và tôi đề nghị bạn không chạm vào nó, unless you love pain), bởi vì bạn không cố gắng di chuyển đến hàng tá hương vị của Unix.

  1. Cuộn Makefiles theo cách thủ công. Sẽ không quá khó nếu bạn có một bộ quy tắc chia sẻ và có Makefiles tối thiểu chỉ cần chỉ định tệp nguồn và tùy chọn biên dịch.
  2. Sử dụng GCC 4.5 làm it supports more C++0x features.
1

TỪ KHI TỪ AUTO * và định cấu hình. Đây là IMHO khủng khiếp.

Nếu bạn bằng cách nào đó có thể có VS 8 hoặc 9 vcproj/sln, bạn có thể sử dụng this. Tôi đã không sử dụng nó, vì vậy tôi không thể đưa ra lời khuyên nào.

Nếu bạn đang chuyển đổi thủ công, tôi sẽ đề xuất một cái gì đó như CMake, vì nó khá dễ dàng để sẵn sàng đủ nhanh, ngay cả đối với các dự án lớn.

Nếu dự án có một bố cục đơn giản, bạn có thể có thành công sử dụng qmake Qt 4 của như thế này:

qmake -project 

Nó sẽ ra một qmake .pro tập tin, có thể được chuyển đổi thành một makefile trên nhiều nền tảng (sử dụng qmake). Điều này sẽ làm việc ổn, nhưng không hoàn hảo. Ngoài ra, bạn có thể cài đặt các plugin Qt cho VS, và để cho nó tạo ra các tập tin chuyên nghiệp từ một dự án VS hiện có. Nó sẽ làm cho hệ thống xây dựng của bạn phụ thuộc vào qmake Qt4, mà có lẽ không phải là những gì bạn muốn.

Có tất nhiên những thứ khác như cmake, nhưng tất cả chúng sẽ yêu cầu can thiệp thủ công.

1

Cách nhanh nhất để làm điều đó?

g++ *.cpp -o myapp 

Nghiêm túc, tùy thuộc vào nhu cầu của bạn, thậm chí tạo một tệp makefile có thể quá mức cần thiết. Nếu bạn chỉ quan tâm đến một cách nhanh chóng và dơ bẩn "hãy xem liệu chúng ta có thể có một chương trình làm việc trên Linux" hay không, chỉ cần ném các tệp mã của bạn tại g ++ và xem điều gì xảy ra.

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