Как скомпилировать googletest на windows, используя mingw с msys?

Моя потребность проста. Я должен скомпилировать и использовать googletest в Windows, используя MinGW с msys. У кого-нибудь есть опыт?

Спасибо за ответы.

Ответ 1

Мне потребовалось некоторое время, но я понял это. Вот руководство для тех, кто сталкивается с той же проблемой.

Чтобы скомпилировать GoogleTest в Windows, выполните следующие действия:

  • Я предполагаю, что у вас есть MinGW с MSYS istalled.

  • Загрузите и установите CMake с официального сайта http://www.cmake.org/. Использовать установщик Win32  версия. После завершения процесса установки скопируйте исполняемые файлы из   "xxx/CMake/bin" в "xxx/MinWG/bin".

  • Загрузите и установите Python из http://www.python.org/. Опять же, установщик Windows выполняет работу  хорошо.  После завершения процесса установки скопируйте файл "python.exe",  создать папку python для   "Ххх/MinWG/бен".

  • Загрузите последний стабильный GoogleTest из http://code.google.com/p/googletest/ и распакуйте его в какую-то папку.

  • Запустите терминал MSYS и выполните следующие команды.

    cd xxx/gtest-x.x.x
    cmake -G "MSYS Makefiles"
    make
    
  • Если у вас есть ошибки компиляции из pthread, следуйте этим инструкциям.

  • Скопируйте папку include "xxx/gtest-x.x.x/include" в ваш gg файл MinGW.  Скопируйте файлы библиотеки "xxx/gtest-x.x.x/*. A" в свою библиотеку ggmin MinGW.

  • Когда вы скомпилируете тесты, добавьте параметр -lgtest в gcc.

ИЗМЕНИТЬ Комментаторы верны. Обработка исполняемых файлов работала для меня, но, как правило, это не очень хорошая практика. Вместо этого используйте символическую ссылку.

Ответ 2

Чтобы создать libgtest.a без cmake/python, но только с помощью mingw make, у gtest теперь есть папка "make" с простым старым makefile.

  • Убедитесь, что mingw\bin находится в пути (попробуйте запустить "g++" или что-то еще).
  • Введите gtest 'googletest\make' и запустите make.
  • Чтобы протестировать, запустите 'sample1_unittest' (должен появиться результат тестовой проверки gtest).
  • Чтобы создать библиотеку 'libgtest.a', запустите 'ar -rv libgtest.a gtest-all.o'

Созданная библиотека представляет собой полную статическую библиотеку без генерации dll.

Это должно быть все.

Кстати, это также работает для создания googlemock, просто введите папку googlemock вместо googletest и выполните ту же процедуру.

Ответ 3

В качестве альтернативы также можно построить googletest, используя обычный MSYS/Mingw make.

Итак, вот мой альтернативный способ:

  • Убедитесь, что MSys/MingW установлен на вашей Windows, и среда PATH установлена ​​на него

  • Откройте окно cmd - вы также можете установить PATH здесь

  • CD в распакованный каталог googletest

  • Вызов configure с sh (часть MSys): sh configure

  • Вызов makelibgtest.a должен быть построен. Он помещается в подкаталог googletest-directory lib/.libs

  • См. README googletest о том, как интегрировать libgtest.a в вашу систему. Также см. Googletest primer в googletest wiki о том, как скомпилировать. В качестве альтернативы укажите путь к библиотеке для gcc -L<googleTestDir>/lib/.libs и добавьте -lgtest, чтобы связать ваш исполняемый файл тестового проекта.

  • При использовании макроса ASSERT_DEATH для проверки утверждений в вашем тестируемом коде (что означает, что в вашем lib или приложении указано не в googletest), вызовите SetErrorMode - example main:

    #include <windows.h>
    #include "gtest/gtest.h"
    
    int main (int argc, char** argv)
    {
        // this prevents annoying error message boxes popping up
        // when assert is called in your program code
        SetErrorMode(SEM_NOGPFAULTERRORBOX);
        ::testing::InitGoogleTest(&argc, argv);
        return RUN_ALL_TESTS();
    }
    

Ответ 4

Вам не нужно копировать двоичные файлы до тех пор, пока они есть у вас на вашем пути. Установите python и CMake. Проверьте их в своей консоли msys (MinGW)

which cmake
which python

Если вы видите путь, то у вас есть двоичные файлы. Если нет, добавьте свой путь к своим переменным окружения > PATH или просто обновите в msys (при необходимости обновите пути установки)

export PATH=$PATH:/c/Program Files (x86)/CMake/bin/cmake.exe:/c/Python27/python.exe

Затем вы можете построить, как было предложено:

cd xxx/gtest-x.x.x
cmake -G "MSYS Makefiles"
make

Проверьте, все ли работает:

cd make
make
./sample1_unittest.exe