Как построить Google protobuf в Windows с помощью MinGW?

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

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

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

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

Чтобы создать и установить среду выполнения буфера протокола С++ и протокол Буферный компилятор (protoc) выполняет следующее: $ ./configure $ make $ make check $ make install

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

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

Ответ 1

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

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

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

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

  • В командной строке перейдите в каталог protobuf:

    cd protobuf-2.4.1

  • Запустите configure script (обратите внимание на обратные кавычки):

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

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

  • Запустить make:

    make

  • Установка:

    make install

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

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

НТН
Питер

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

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

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

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

Изменить # 2:

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

готовые библиотеки protobuf для Windows. Был построен с mingw: mingw492_32 (qt5.6.3), mingw530_32 (qt5.9.7), mingw730_64 (qt5.12.0).

https://cloud.mail.ru/public/3a5c/KmGisEzJU