Как собрать протобуф Google в Windows, используя MinGW?

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

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

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

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

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

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

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

Ответы на вопрос(3)

Решение Вопроса

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

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

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

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

cd protobuf-2.4.1

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

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

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

Запустите make:

make

Установка:

make install

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

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

НТН
Питер

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

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

gcc не работает из оболочки MSYS.
Я должен был запустить пакетный файл после установки вручную и ответить на вопросы там. Это устанавливает записи fstab, которые монтируют каталоги mingw в среде 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. при попытке запустить проток.
Я должен был отключить сканер в реальном времени Avira иmake clean && make && make install очередной раз

Изменить № 2:

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

Иди сюда Скачать!

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

 Karl Morrison21 сент. 2016 г., 16:05
Ух ты. Никогда не возвращаясь в Windows из Linux. Что за беспорядок в винде.
 Alex11 февр. 2012 г., 23:48
Спасибо за ответ :) Я попробую.
 Alex12 февр. 2012 г., 00:17
Хорошо, я сделал это, и это сработало :), так что большое спасибо за ответ.
 aces.29 нояб. 2012 г., 00:46
@Peter: я попытался выполнить шаги, которые вы перечислили. Когда я запускаю команду «./configure», я получаю следующую ошибку: проверка того, как запустить препроцессор C ++ ... / lib / cpp configure: ошибка: препроцессор C ++ "/ lib / cpp" не проходит проверку работоспособности. В результате этого нет Команды make, make install работают. Например: make: *** Не указаны цели и не найден make-файл. Стоп.
 Karl the Pagan28 апр. 2015 г., 16:14
Используя MinGW, я столкнулся с этой проблемой: tar: «Значение архива 84224 вне диапазона uid_t 0..65535» Оказывается, в cygwin есть поддержка больших uid. Если вы видите эту проблему, установите Cygwin и повторите приведенные выше инструкции.

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

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

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

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

 Dan Tenenbaum25 мар. 2016 г., 20:37
В современных версиях исходного кода protobuf (3.0.0-beta2) отсутствует сценарий ./configure, иautoconf терпит неудачу; есть ли шанс обновленного ответа?

Ваш ответ на вопрос