Как настроить gtest в Windows Netbeans? - PullRequest
2 голосов
/ 13 марта 2011

Я просматривал форумы Netbeans, gtest wiki и другие, и я не могу найти способ заставить gtest работать правильно в Netbeans (6.9.1, Windows 7x64). Нет проблем с моим #include gtest.h или самим файлом unittest - распознается ASSERT_LE и т. Д. Я использую cygwin, и результаты такие же, как и у gtest на c: \ gtest-1.5.0 или cygwin / usr / местный / GTEST-1.5.0. Я думаю, что это может быть вопросом получения другого make-файла для тестов, чтобы использовать и основанный на включенном gtest make-файле, но это не сработало для меня (возможно, я делаю это неправильно). Вот что я получаю, когда нажимаю ALT-F6 (тестовый проект):


g++.exe     -o build/Debug/Cygwin-Windows/tests/TestFiles/f1 build/Debug/Cygwin-Windows/tests/tests/Armor_unittest.o build/Debug/Cygwin-Windows/tests/tests/newsimpletest.o build/Debug/Cygwin-Windows/main_nomain.o build/Debug/Cygwin-Windows/Character_nomain.o build/Debug/Cygwin-Windows/Map_nomain.o build/Debug/Cygwin-Windows/Armor_nomain.o  build/Debug/Cygwin-Windows/Weapon_nomain.o build/Debug/Cygwin-Windows/Shop_nomain.o build/Debug/Cygwin-Windows/Enemy_nomain.o  
build/Debug/Cygwin-Windows/tests/tests/Armor_unittest.o: In function `_ZN31ArmorTest_SetupAndGetWorks_Test8TestBodyEv':
/cygdrive/c/Users/.../winPro2Game/tests/Armor_unittest.cpp:9: undefined reference to `testing::internal::AssertHelper::AssertHelper(testing::TestPartResult::Type, char const*, int, char const*)'
/cygdrive/c/Users/.../winPro2Game/tests/Armor_unittest.cpp:9: undefined reference to `testing::internal::AssertHelper::operator=(testing::Message const&) const'
/cygdrive/c/Users/.../winPro2Game/tests/Armor_unittest.cpp:9: undefined reference to `testing::internal::AssertHelper::~AssertHelper()'
/cygdrive/c/Users/.../winPro2Game/tests/Armor_unittest.cpp:9: undefined reference to `testing::internal::AssertHelper::~AssertHelper()'

и т.д ...

Если я добавлю в тестовую папку пользовательский сборочный файл, почти идентичный тому, который включен в gtest, щелкните правой кнопкой мыши по нему и выберите Make:

Makefile:21: target `gtest-all.o' doesn't match the target pattern
Makefile:25: target `gtest_main.o' doesn't match the target pattern
Makefile:39: *** multiple target patterns.  Stop.

Если я сделаю тестовый проект снова, я получу:


rm -f build/Debug/Cygwin-Windows/tests/tests/Makefile.o.d
g++.exe    -c -g -I../../../../../../../gtest-1.5.0/include -MMD -MP -MF build/Debug/Cygwin-Windows/tests/tests/Makefile.o.d -o build/Debug/Cygwin-Windows/tests/tests/Makefile.o tests/Makefile
g++: tests/Makefile: linker input file unused because linking not done
gcc.exe   build/Debug/Cygwin-Windows/tests/tests/Makefile.o   -o build/Debug/Cygwin-Windows/tests/tests/Makefile
gcc: build/Debug/Cygwin-Windows/tests/tests/Makefile.o: No such file or directory
gcc: no input files
make[1]: *** [build/Debug/Cygwin-Windows/tests/tests/Makefile] Error 1
make[1]: Leaving directory `/cygdrive/c/Users/.../winPro2Game'
make: *** [.build-tests-impl] Error 2

Спасибо!

1 Ответ

0 голосов
/ 05 декабря 2011

вы были близки с самого начала - из первого фрагмента "undefined reference", это проблема конфигурации компоновщика - у вас нет добавленной библиотеки gtest. Насколько я помню, gtest не поставляет двоичные файлы, поэтому вам придется самостоятельно скомпилировать библиотеку (gtest.lib), а затем добавить это где-нибудь в свойствах компоновщика как дополнительную библиотеку - я не пользователь netbeans, не могу сказать точно где.

...