2009-04-29 39 views
40

Cách tốt nhất và dễ nhất để xây dựng (cho Linux) là ứng dụng C++ được viết bằng Visual Studio là gì? Bản thân mã đã sẵn sàng - tôi chỉ sử dụng các libs đa nền tảng.Làm thế nào để xây dựng một dự án Visual C++ cho Linux?

Có thể chuẩn bị mọi thứ trong Windows trong Visual Studio và sau đó xây dựng nó bằng công cụ CLI trong Linux không? Có tài liệu nào mô tả điều này không?

EDIT: Một số biết thêm thông tin:

  • Libs sử dụng: STL, wxwidgets, thúc đẩy, ASIO, cryptlib.

  • Rất ít bí quyết về Linux.

EDIT # 2: tôi đã chọn giải pháp sau đây: Hãy dự án mới với kdevelop và biên dịch tất cả mọi thứ ở đó.

Trả lời

19

Chúng tôi đang sử dụng CMake cho các dự án Linux. CMake có thể tạo ra các tệp dự án KDevelop và Visual Studio, vì vậy bạn có thể tạo tệp CMake của mình làm nguồn gốc của các tệp IDE nền tảng cụ thể. Máy phát điện KDevelop là tốt, vì vậy bạn có thể chỉnh sửa và biên dịch trong KDevelop (lần lượt gọi là Make). Mặt khác, nếu bạn không có gì lạ mắt, bạn có thể sử dụng CMake hoặc chỉ Make để xây dựng điều trên Linux, nếu bạn muốn ở lại với tệp giải pháp của bạn (đó là những gì tôi hiện đang làm cho một thư viện với các ứng dụng thử nghiệm). Cách tiếp cận này trở nên phức tạp khi quá trình xây dựng của bạn không chỉ là "ném các tệp này vào trình biên dịch và chúng ta hãy xem nó làm gì", vì vậy giải pháp CMake theo ý kiến ​​của tôi là điều tốt cho phát triển đa nền tảng.

+0

Tôi muốn có nó theo cách, mà tôi có thể sử dụng các thiết lập VisualStudio hiện có và lưu nó như makefile? và sử dụng nó dưới Linux. Điều đó có thể không? /mspoerr – mspoerr

+2

Visual C++, ít nhất một thời gian trước, hỗ trợ xuất dự án/giải pháp sang tệp makefile. Bạn có thể thử nó, nhưng makefile kết quả là (hoặc tại thời điểm đó) một mớ hỗn độn đẫm máu. Bạn cũng có thể thử tạo một XSLT để chuyển đổi tệp dự án (không phải là giải pháp, mặc dù) thành bất kỳ thứ gì bạn thích, bao gồm tệp Makefile hoặc CMake. – OregonGhost

4

Cách tốt nhất và dễ nhất để tạo ứng dụng C++, được viết bằng Visual Studio, cho Linux là gì? Bản thân mã đã sẵn sàng - tôi chỉ sử dụng các e-mail chéo plattform.

  • Kiểm tra nếu có bất cứ điều gì đó không phải là một phần của chuẩn C++
  • Rửa và lặp lại
  • Tạo một makefile hoặc một dự án KDevelop

Et thì đấy!

+1

có thể tạo tệp makefile này từ VisualStudio không? Những thay đổi nào cần thiết để làm cho nó hoạt động dưới Linux? /mspoerr – mspoerr

+2

Một số phiên bản của VS có thể tạo các makefiles cho nmake - một hệ thống xây dựng dựa trên Windows CLI. Việc bạn tìm thấy trên các hệ thống * nix hơi khác một chút. Bạn sẽ cần phải loại bỏ sự khác biệt. IMO, nó sẽ dễ dàng hơn để 1) Sử dụng Code :: Blocks (hoặc một số nền tảng IDE) và gcc trên Windows của bạn để có được một hệ thống xây dựng làm việc và sau đó sử dụng nó trên Linux HOẶC 2) sử dụng KDevelop có một cái nhìn -n-cảm thấy tương tự như VS để thêm tập tin nguồn/libs vv và có được một hệ thống xây dựng dựa trên autoconf được tạo ra cho bạn. – dirkgently

7

Dưới đây là làm thế nào để biên dịch mã C bằng tay dưới Linux không cần thông qua công cụ xây dựng:

gcc -s -O2 -o prog -I. -Iincludedir1 -Iincludedir2 -Llibdir1 -Llibdir2 code1.c code2.c -luse1 -luse2 

Tuy nhiên, nếu dự án của bạn là lớn hơn so với một vài tập tin, bạn có thể muốn sử dụng một công cụ xây dựng thay vào đó là (chẳng hạn như CMake, hãy xem câu trả lời của OregonGhost) để tự động biên dịch nhiều tệp và làm cho nó tăng dần. Nếu bạn sử dụng một công cụ xây dựng, nó sẽ chạy gcc dưới mui xe, với các đối số tương tự ở trên. Sẽ hữu ích khi hiểu các đối số ở trên, vì vậy bạn có thể khắc phục sự cố nếu quá trình xây dựng tự động của bạn không thành công.

Điều này sẽ biên dịch mã1.c và mã2.c thành chương trình nhị phân có thể thực thi, tải tệp .h từ., Includeir1 và includeir2, thư viện tải (ví dụ: libuse1.so * và libuse2.vì vậy *) từ thư mục libdir1 và libdir2, sử dụng thư viện use1 (tương ứng với tên tập tin libuse1.so *) và use2.

Nếu bạn gặp lỗi biểu tượng không xác định trong tệp .c, bạn phải chỉ định thêm -I cờ. Nếu bạn gặp lỗi biểu tượng không xác định trong tệp .o, bạn phải chỉ định thêm các cờ -l. Nếu bạn gặp lỗi cannot find -l..., bạn phải chỉ định thêm -L cờ.

+5

Tôi giả sử anh ta có nhiều hơn một tệp. Biên dịch mà không Makefiles là ngớ ngẩn. – Zifre

+0

@Zifre: Tôi đã cập nhật câu trả lời của mình, đề xuất công cụ xây dựng. Tôi nghĩ rằng câu trả lời của tôi là sâu sắc và hữu ích để khắc phục sự cố, ngay cả khi công cụ xây dựng được sử dụng. – pts

+0

điều này phải là g ++ cho một dự án C++ phải không? –

5

8 năm sau ...

tôi stumbled trên câu hỏi này ngày hôm nay và nghĩ rằng bạn có thể muốn có một cái nhìn tại Visual C++ for Linux.

Được phát hành vào tháng 3 năm 2016, VC++ cho Linux cho phép bạn tạo dự án trong VC++ và sau đó xây dựng nó trong máy Linux/VM bằng các công cụ Linux gốc. Hơn nữa, bạn cũng có thể gỡ lỗi ứng dụng của bạn từ trong VS vì các công cụ Linux cho phép trình gỡ lỗi VS điều khiển GDB trong máy/máy ảo Linux của bạn qua SSH !!

Có vẻ như đây gần như chính xác những gì @mspoerr đang yêu cầu :)

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