2008-09-15 28 views
10

Có cách nào để sử dụng trình biên dịch GCC trong khi vẫn có thể phát triển thông qua Visual Studio IDE không?Sử dụng GCC từ bên trong VS 2005 (8) IDE

Dự án của chúng tôi là nền tảng chéo và tôi thường gặp rắc rối từ colleague vì tôi đang kiểm tra mã không tuân thủ tiêu chuẩn (điều này có thể được quy cho trình biên dịch VS!).

Tôi vẫn muốn có thể biên dịch bằng trình biên dịch MS, vì vậy tôi có thể tiếp tục gỡ lỗi, v.v. Tuy nhiên, tôi muốn có thể chuyển đổi để sử dụng GCC, để tôi có thể chắc chắn tôi không phá vỡ bản dựng trên các nền tảng khác.

Điều này có khả thi không?

Trả lời

5

Những gì tôi sắp đề xuất vẫn sẽ yêu cầu một makefile, vì vậy tôi một phần lặp lại lời khuyên từ một câu trả lời trước đó. Hoặc, như đã được đề cập trước đó, có thể bạn đã có một makefile, trong trường hợp đó bạn sẽ có ít bước hơn để hoàn thành những gì tôi sắp mô tả.

Khi bạn biết lệnh cửa sổ cụ thể của dòng lệnh của bạn để gọi thực hiện hoặc g ++ trên mã của bạn, sau đó bạn tạo một "Pre-Build Event" trong Visual Studio Project của bạn. ("Thuộc tính dự án >> Thuộc tính cấu hình >> Sự kiện xây dựng >> Sự kiện trước khi tạo dựng").

Sự kiện dựng sẵn có thể gọi tập lệnh dơi hoặc bất kỳ tập lệnh nào khác trên máy của bạn và tập lệnh đó sẽ có thể trả lại mã lỗi. Về cơ bản, "tập lệnh OK" hoặc "tập lệnh FAILED" là mức độ giao tiếp tập lệnh của bạn có thể có BACK cho studio trực quan.

Tập lệnh không tự động xem tất cả các biến môi trường studio trực quan (chẳng hạn như $ (InputDir), $ (ProjectDir), $ (SolutionName), vv), tuy nhiên bạn có thể sử dụng các biến đó khi bạn chỉ định cách gọi kịch bản. Nói cách khác, bạn có thể chuyển các giá trị đó cho tập lệnh dưới dạng đối số.

Thiết lập điều này để mỗi lần bạn xây dựng trong Visual Studio, sự kiện dựng sẵn sẽ FIRST cố gắng chạy make/g ++ trên mã của bạn. Nếu kịch bản lệnh của bạn (kịch bản lệnh gọi make/g ++) phát hiện bất kỳ vấn đề nào, thì kịch bản trả về lỗi và bản build có thể được STOPPED ngay tại đó và ở đó. Kịch bản có thể in ra stdout hoặc stderr và đầu ra đó sẽ được hiển thị cho bạn trong cửa sổ đầu ra Visual Studio Build (cửa sổ thường hiển thị các nội dung như "========== Xây dựng: 3 thành công, 0 thất bại").

Bạn có thể in kịch bản:

"BUILD FAILED, mã không cầm tay phát hiện, làm cho/g ++ trở như sau: ........."

Bằng cách này, bạn không phải nhớ định kỳ chuyển từ Visual Studio sang dòng lệnh. Nó sẽ tự động được thực hiện cho bạn mỗi khi bạn xây dựng.

0

Tôi đã phải duy trì các tệp makefiles riêng biệt để biên dịch bằng gcc. Có một chi phí trả trước liên quan đến việc học tập, nhưng bạn sẽ được hưởng lợi từ kiến ​​thức thân mật về mã của bạn và sự khác biệt giữa VS C++ và gcc. Khi tôi đã làm điều này, tôi đã sử dụng VC 6, vì vậy có thể có một cách tốt hơn bây giờ với VS 2005.

0

Hãy thử Cygwin, miễn là bạn thiết lập tất cả Makefiles của bạn một cách chính xác bạn luôn có thể thử để biên dịch cả trên VS và trên GCC

1

Tôi không nghĩ rằng có một chuyển đổi đơn giản, bởi vì các tùy chọn dòng lệnh của gcc rất khác với các VS. Trong mọi trường hợp, chỉ cần chạy trình biên dịch sẽ không nhỏ, vì hệ thống xây dựng của bạn có thể đặt một bó tiền xử lý định nghĩa và xây dựng các biến cần được thiết lập để biên dịch thành công.

Nếu đồng nghiệp của bạn đang làm việc trên Unix, anh ấy có thể có một hệ thống tạo, scons hoặc dựa trên cmake. Bạn có thể sử dụng Cygwin để cài đặt chuỗi công cụ Unix chuẩn trên Windows, bao gồm gcc, make, flex, bison và tất cả các tính năng Unix khác. Có phiên bản gốc của scons và cmake, nhưng những người sẽ cố gắng sử dụng VS, do đó sẽ không giúp bạn. Tôi đã không cố gắng cài đặt chúng thông qua Cygwin để xem nếu điều đó buộc họ phải gcc, nhưng điều đó có thể không có liên quan đến bạn.

Tạo hệ thống tạo sử dụng trình biên dịch VS là có thể nhưng gây đau (đã ở đó, thực hiện điều đó). Và một câu hỏi khác. ;)

Sau đó, bạn có thể sử dụng một bước xây dựng đặc biệt để chạy trình biên dịch gcc từ bên trong VS. Nó sẽ là tốt hơn để có một mục tiêu xây dựng riêng biệt (như Debug và Release), và bạn có thể tạo chúng trong các tệp dự án (chúng chỉ là các tệp ASCII, kiểm tra chúng), nhưng tôi không đủ của một người VS biết việc đó sẽ dễ dàng như thế nào. Giữ cho nó cập nhật sẽ có một chút đau đớn, bạn có thể muốn viết một kịch bản để tạo ra nó tự động.

0

tùy thuộc vào mức độ phức tạp của tệp dự án của bạn:

bạn chắc chắn cần môi trường gcc như cygwin.

  • cho các dự án nhỏ hoặc tập tin duy nhất biên dịch, bạn có thể sử dụng một công cụ xây dựng tùy chỉnh (quy tắc-file)

  • cho các dự án lớn/giải pháp Tôi đang tự động tạo ra một cấu hình autotools/makefile từ vcproj/sln-file và biên dịch nó bên trong IDE. các tệp nguồn/dòng cảnh báo và lỗi của gcc được dịch sang IDE tương đương (có thể nhấp vào trong cửa sổ đầu ra).

1

Có những cách chắc chắn để làm điều này - đây là cách chúng tôi phát triển cho PS3 với toolchain của sony (dựa trên gcc). Tôi không biết chính xác nó hoạt động như thế nào, nhưng nó tích hợp hoàn toàn với VS.

Tôi nghĩ rằng những gì bạn cần làm là thiết lập để xây dựng với một makefile (có lẽ là dễ nhất) hoặc để viết chương trình bao bọc chuyển đổi đối số VC thành gcc. Ngoài ra, nếu bạn muốn đầu ra lỗi/cảnh báo ở định dạng VS (vì vậy bạn có thể nhấp vào nó và lấy tệp/dòng đó trong trình chỉnh sửa), bạn cần một cái gì đó để chuyển đổi đầu ra.

Công cụ này có thể giúp bạn trong việc a related discussion về việc sử dụng VS với WRS/VxWorks phiên bản trong những công cụ gcc:

Đặc biệt lưu ý các program linked there mà chuyển đổi đầu ra lỗi.

0

Có lẽ bạn đã sử dụng makefile để xây dựng dự án của mình, vì nó là nền tảng chéo. Chỉ cần tạo dự án VS của bạn một dự án makefile với các cấu hình dự án khác nhau khởi động makefile bằng cách sử dụng các tham số khác nhau để chỉ ra có hay không một bản xây dựng dành cho MSVC hoặc GCC.

Nếu bản dựng tệp của MSVC của bạn có khả năng xây dựng các tệp gỡ lỗi (PDB) - mà nó có thể làm, thì trình gỡ lỗi VS sẽ hoạt động liên tục.

Sau đó, xây dựng bằng cách sử dụng GCC bên trong Visual Studio cũng đơn giản như chọn menu thả xuống cấu hình 'GCC' trên thanh công cụ.

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