Моя потребность проста. Я должен скомпилировать и использовать googletest в Windows, используя MinGW с msys. У кого-нибудь есть опыт?
Спасибо за ответы.
Моя потребность проста. Я должен скомпилировать и использовать googletest в Windows, используя MinGW с msys. У кого-нибудь есть опыт?
Спасибо за ответы.
Мне потребовалось некоторое время, но я понял это. Вот руководство для тех, кто сталкивается с той же проблемой.
Чтобы скомпилировать 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.
ИЗМЕНИТЬ Комментаторы верны. Обработка исполняемых файлов работала для меня, но, как правило, это не очень хорошая практика. Вместо этого используйте символическую ссылку.
Чтобы создать libgtest.a без cmake/python, но только с помощью mingw make, у gtest теперь есть папка "make" с простым старым makefile.
Созданная библиотека представляет собой полную статическую библиотеку без генерации dll.
Это должно быть все.
Кстати, это также работает для создания googlemock, просто введите папку googlemock вместо googletest и выполните ту же процедуру.
В качестве альтернативы также можно построить googletest, используя обычный MSYS/Mingw make.
Итак, вот мой альтернативный способ:
Убедитесь, что MSys/MingW установлен на вашей Windows, и среда PATH установлена на него
Откройте окно cmd - вы также можете установить PATH здесь
CD в распакованный каталог googletest
Вызов configure с sh (часть MSys): sh configure
Вызов make
→ libgtest.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();
}
Вам не нужно копировать двоичные файлы до тех пор, пока они есть у вас на вашем пути. Установите 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