Как собрать протобуф Google в Windows, используя MinGW? - PullRequest
20 голосов
/ 12 февраля 2012

Я использую Codeblocks в качестве своей IDE с MingGW. Я пытаюсь использовать буферы протокола Google, но у меня проблемы со сборкой протобуфа.

Файл readme для protobuf говорит:

Если вы используете Cygwin или MinGW, следуйте инструкциям по установке Unix, приведенным выше.

Инструкция Unix гласит:

Для сборки и установки C ++ Protocol Buffer runtime и Protocol Буферный компилятор (protoc) выполняет следующее: $ ./configure $ make $ make check $ make install

Я не знаю, как выполнить это в Windows потому что «настроить» является сценарий Unix и Я не знаю, как выполнить его или остальные команды.

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

Ответы [ 3 ]

25 голосов
/ 12 февраля 2012

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

  1. Вам необходимо установить MSYS с mingw. Это минимальная Unix-подобная оболочка, которая позволяет вам конфигурировать / создавать большинство пакетов Unix. Прочтите в документации mingw, как это установить (с помощью mingw-get или установщика с графическим интерфейсом).

  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 (например, с помощью CodeBlocks ...)

  6. Выполнить make:

    make

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

    make install

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

    • звоните protoc из вашего проекта / makefiles
    • #include <google/protobuf/message.h> и т. Д.
    • ссылка с -lprotobuf или -lprotobuf-lite

НТН
Питер

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

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

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

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

Редактировать # 2:

Этот пост немного постарел, и mingw уже не равен mingw. В наши дни я бы скорее рекомендовал MSYS2, который поставляется с портом менеджера пакетов pacman ArchLinux, недавнюю, более эффективную (поддержку c ++ 11 std :: thread!) Mingw для 32- и 64-битных систем, и пакет protobuf, который вам просто нужно установить и быть хорошим.

Зайдите сюда , чтобы загрузить!

Надеюсь, это поможет!
Питер

1 голос
/ 05 августа 2014

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

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

0 голосов
/ 25 февраля 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...