2012-02-11 32 views
20

Tôi đang sử dụng Codeblocks làm IDE của mình với MingGW. Tôi đang cố gắng sử dụng bộ đệm giao thức google, nhưng tôi đang gặp sự cố khi tạo protobuf.Làm thế nào để xây dựng protobuf của Google trong Windows bằng cách sử dụng MinGW?

Các tập tin readme cho protobuf nói:

If you are using Cygwin or MinGW, follow the Unix installation instructions, above.

Các hướng dẫn Unix nói:

To build and install the C++ Protocol Buffer runtime and the Protocol Buffer compiler (protoc) execute the following: $ ./configure $ make $ make check $ make install

Tôi không biết làm thế nào để thực hiện các trong Windows vì "cấu hình" là một kịch bản Unix và Tôi không biết cách thực hiện nó hoặc các lệnh còn lại.

Ai đó có thể giải thích chi tiết hơn cách Tôi có thể xây dựng protobuf bằng cách sử dụng MinGW trên Windows không?

Trả lời

25

Đây là những gì làm việc cho tôi:

  1. Bạn cần cài đặt MSYS với mingw. Đây là môi trường shell giống như unix tối thiểu cho phép bạn cấu hình/tạo các gói unix. Đọc các tài liệu mingw về cách cài đặt (bằng mingw-get hoặc trình cài đặt GUI).

  2. Khi bạn đã cài đặt MSYS, bạn sẽ có một lối tắt trong menu bắt đầu, có tên là "MinGW Shell". Điều đó mở ra một giao diện điều khiển với một bash.

  3. Trích xuất tarball nguồn vào thư mục chính MSYS của bạn. Tôi đã cài đặt mingw trong "D: \ prog", vì vậy thư mục là "D: \ prog \ MinGW \ msys \ 1.0 \ home \ < tên người dùng >". Bạn có thể nói tên người dùng MSYS của bạn từ dấu nhắc trình bao. Khi hoàn tất, bạn nên có một thư mục "D: \ prog \ MinGW \ msys \ 1.0 \ home \ < tên người dùng > \ protobuf-2.4.1".

  4. Tại dấu nhắc shell, thay đổi vào thư mục protobuf:

    cd protobuf-2.4.1

  5. Run script configure (chú ý backquotes):

    ./configure --prefix=`cd /mingw; pwd -W`

    Các --prefix paramater đảm bảo protobuf được cài đặt trong cây thư mục mingw thay vì thư mục MSYS, vì vậy bạn có thể xây dựng bên ngoài vỏ MSYS (ví dụ: wit h CodeBlocks ...)

  6. Run thực hiện:

    make

  7. Install:

    make install

  8. Vậy là xong. Bây giờ bạn có thể biên dịch dự án của bạn với protobuf.
    Bạn sẽ có thể:

    • gọi protoc từ dự án của bạn/makefiles
    • #include <google/protobuf/message.h>, vv
    • liên kết với -lprotobuf hoặc -lprotobuf-lite

HTH
Peter

Chỉnh sửa: Mang tính năng này cập nhật hơn một chút. Tôi đã cố gắng thiết lập một máy tính mới với các phiên bản hiện tại của MinGW và protobuf 2.5.0, và đây là những vấn đề tôi đã:

  1. Không có "MinGW Shell" phím tắt trong menu Start.
    Vì một số lý do cài đặt MinGW hiện tại không thể cài đặt được.
    Nhưng có một msys.bat trong <Mingw home>\msys\1.0 sẽ hiển thị bảng điều khiển có dấu gạch chéo. Tạo một lối tắt đến tệp bó đó ở đâu đó.

  2. gcc không hoạt động từ vỏ MSYS.
    Tôi đã phải chạy một tập tin batch sau khi cài đặt bằng tay và trả lời các câu hỏi ở đó. Điều này thiết lập các mục nhập fstab gắn kết các thư mục mingw trong môi trường MSYS.
    Bạn cần chạy <Mingw home>\msys\1.0\postinstall\pi.bat

  3. Chống vi-rút Avira của tôi can thiệp vào quá trình biên dịch protobuf.
    Nó phàn nàn về các protoc.exe được tạo ra là một tro "TR/Crypt.XPACK.Gen" và bị chặn acces vào tập tin đó, dẫn đến một xây dựng bị hỏng.
    Tôi nhận được thông báo lỗi nói điều gì đó như protoc:./.libs/lt-protoc.c:233: FATAL: couldn't find protoc. khi cố gắng bắt đầu protoc.
    tôi phải vô hiệu hóa các máy quét thời gian thực Avira và make clean && make && make install lại

Chỉnh sửa # 2:

Chủ đề này đã ở độ tuổi khá một chút, và mingw không làm mingw bằng nữa. Trong ngày và tuổi này, tôi muốn giới thiệu MSYS2 đi kèm với một cổng quản lý gói pacman của ArchLinux, một hỗ trợ gần đây, tốt hơn (C++ 11 std :: thread!) Cho cả 32 và 64 bit, và một gói protobuf mà bạn chỉ cần cài đặt và là tốt.

Go here để tải xuống!

Hy vọng điều này sẽ hữu ích!
Peter

+0

Thanx cho câu trả lời :) Tôi sẽ thử. – Alex

+0

Ok, tôi đã làm nó, và nó đã làm việc :), vì vậy thanx rất nhiều cho câu trả lời. – Alex

+0

@Peter: Tôi đã thử làm theo các bước bạn đã liệt kê. Khi tôi chạy lệnh './configure', tôi nhận được lỗi sau: kiểm tra cách chạy bộ tiền xử lý C++ .../lib/cpp cấu hình: lỗi: C++ preprocessor "/ lib/cpp" kiểm tra lỗi không thành công 'Kết quả là , không có lệnh nào, làm cho lệnh cài đặt hoạt động. Ví dụ: make: *** Không có mục tiêu nào được chỉ định và không tìm thấy tệp makefile. Dừng lại. –

0

Tôi đã gặp vấn đề tương tự và tôi đã giải quyết vấn đề này bằng cách xây dựng bộ đệm giao thức bằng cách sử dụng tăng cường xây dựng. Điều đó làm việc tốt, tôi có thể cung cấp một jamfile cho bộ đệm giao thức.

Điều tôi vẫn gặp phải vấn đề là tăng cường xây dựng tăng để tạo tệp nguồn cpp từ tệp proto, nhưng đó là một câu chuyện khác.

+2

Phiên bản hiện tại của bản phân phối nguồn protobuf (3.0.0-beta2) không có tập lệnh ./configure và 'autoconf' không thành công; bất kỳ cơ hội của một câu trả lời được cập nhật? –

1

Trong trường hợp của tôi Câu trả lời của Peter không hoạt động hoàn toàn, tôi đã sử dụng MinGW 4.8 mới nhất.1 + phân phối MSys (chọn cả hai gói MSys trong mingw-get).

Vấn đề của tôi là tiền tố không thực sự hoạt động, tôi chỉ có thể tìm thấy các tệp trong C:\MinGW\msys\1.0\local. Tuy nhiên, sau khi sao chép các thư mục bin/include/libs sang c:\mingw, bản cài đặt cũng hoạt động cho tôi.

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