2012-02-11 1 views
20

Я использую Codeblocks как свою IDE с MingGW. Я пытаюсь использовать буферы протокола google, , но у меня возникли проблемы с созданием protobuf.Как создать протобуф Google в Windows с помощью MinGW?

Файл Readme для Protobuf говорит:

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

инструкции Unix говорит:

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

Я не знаю, как выполнить их в ОС Windows , потому что "настроить" это скрипт Unix и Я не знаю, как выполнить его, или остальные команды.

Может кто-нибудь объяснить более подробно, как Я могу построить protobuf с помощью MinGW на Windows?

ответ

25

Вот что работает для меня:

  1. Вам необходимо установить MSYS с MinGW. Это минимальная среда, похожая на unix, которая позволяет вам настраивать/делать большинство пакетов unix. Прочтите документы mingw о том, как их установить (либо с помощью mingw-get, либо с помощью установщика GUI).

  2. После того, как вы установили MSYS, вы должны иметь ярлык в своем стартовом меню под названием «MinGW Shell». Это открывает консоль с bash.

  3. Извлеките исходный архив в домашний каталог MSYS. У меня есть mingw, установленный в «D: \ prog», поэтому каталог был «D: \ prog \ MinGW \ msys \ 1.0 \ home \ < имя пользователя >». Вы можете указать свое имя пользователя MSYS в командной строке. Когда это будет сделано, вы должны иметь каталог «D: \ prog \ MinGW \ msys \ 1.0 \ home \ < имя пользователя > \ protobuf-2.4.1".

  4. В командной строке перейдите в каталог Protobuf:

    cd protobuf-2.4.1

  5. Выполнить скрипт конфигурации (обратите внимание на обратные кавычки):

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

    --prefix В параметре убеждается protobuf устанавливается в дереве каталогов mingw вместо каталогов MSYS, поэтому вы можете строить вне оболочки MSYS (например, wit ч CodeBlocks ...)

  6. Run замыкающих:

    make

  7. Установка:

    make install

  8. Вот это. Теперь вы сможете скомпилировать свой проект с protobuf.
    Вы должны быть в состоянии:

    • вызова protoc из проекта/Makefiles
    • #include <google/protobuf/message.h> т.д.
    • связь с -lprotobuf или -lprotobuf-lite

HTH
Питер

Редактировать: Привести это немного более актуально. Я попытался создать новый компьютер с текущими версиями MinGW и Protobuf 2.5.0, и эти проблемы у меня были:

  1. Там нет «MinGW Shell» ярлык в меню Пуск.
    По какой-то причине текущие установки MinGW не могут установить это.
    Но есть msys.bat в <Mingw home>\msys\1.0, который поднимает консоль с башкой. Создайте ярлык для этого командного файла где-нибудь.

  2. gcc не работает из корпуса MSYS.
    Мне пришлось запускать пакетный файл после установки вручную и отвечать на вопросы там. Это устанавливает записи fstab, которые монтируют потоковые каталоги в среде MSYS.
    Вам необходимо запустить <Mingw home>\msys\1.0\postinstall\pi.bat

  3. Мой антивирус Avira вмешивался в сборку protobuf.
    Он жаловался, что сгенерированный protoc.exe был трояном «TR/Crypt.XPACK.Gen» и заблокировал доступ к этому файлу, в результате чего была повреждена сборка.
    При попытке запустить protoc я получил сообщение об ошибке примерно protoc:./.libs/lt-protoc.c:233: FATAL: couldn't find protoc..
    мне пришлось отключить сканер Avira в режиме реального времени и make clean && make && make install снова

Edit # 2:

Это сообщение в возрасте совсем немного, и MinGW не равен MinGW больше. В этот день я бы предпочел рекомендовать MSYS2, который поставляется с портом менеджера пакетов pacman от ArchLinux, новейшей, улучшенной (C++ 11 std :: thread support!) Mingw fork для 32 и 64 бит, и пакет protobuf, который вам просто нужно установить и быть хорошим.

Go here Загрузить!

Надеюсь, это поможет!
Peter

+0

Спасибо за ответ :) Я попробую. – Alex

+0

Хорошо, я сделал это, и это сработало :), поэтому спасибо за ответ. – Alex

+0

@Peter: Я пробовал следовать приведенным вами шагам. Когда я запускаю команду «./configure», я получаю следующую ошибку: проверка того, как запустить препроцессор C++ .../lib/cpp configure: ошибка: препроцессор C++ «/ lib/cpp» не прошел проверку работоспособности «В результате , ни одна из команд make, make install не работает. Например: make: *** Нет заданных целей и не найден файл makefile. Стоп. –

0

У меня была такая же проблема, и я решил ее, создав буферы протокола, используя boost build. Это хорошо работает, я могу предоставить файл jamfile для буферов протокола.

У меня все еще есть проблемы с расширением boost, поэтому он генерирует исходные файлы cpp из прото-файлов, но это еще одна история.

+2

Современные версии исходного источника protobuf (3.0.0-beta2) не имеют сценария ./configure, и 'autoconf' терпит неудачу; любой шанс обновленного ответа? –

1

В моем случае ответ Петра не работал полностью, я использовал последнюю версию MinGW 4.8.1 + распределение MSys (выбрано оба пакета MSys в mingw-get).

Проблема была в том, что префикс действительно не работал, я мог найти файлы только в C:\MinGW\msys\1.0\local. Однако после копирования папок bin/include/libs в c:\mingw, установка работала и на меня.