ls -v googletest
/usr/local/Cellar/googletest/1.14.0/INSTALL_RECEIPT.json
/usr/local/Cellar/googletest/1.14.0/LICENSE
/usr/local/Cellar/googletest/1.14.0/.brew/googletest.rb
/usr/local/Cellar/googletest/1.14.0/include/gtest/gtest-matchers.h
/usr/local/Cellar/googletest/1.14.0/include/gtest/gtest-death-test.h
...
Убедись, что CMake её находит.
если в строчке find_package(GTest REQUIRED) я пишу например googletest, то вылазит ошибка, что cmake не может найти эту либу
Ну вот это всё find_package(GTest REQUIRED) target_include_directories(MyStringTests PRIVATE ${GTEST_INCLUDE_DIRS}) target_link_libraries(MyStringTests PRIVATE ${GTEST_BOTH_LIBRARIES}) Должно давать такой эффект , что GTest должен подключаться верно. А у тебя это не происходит
прописал -v для расширенного формата получил следующее: .../MyStringTests.cpp.o -o MyStringTests -lgtest -lgtest_main /usr/local/lib/libgtest.a /usr/local/lib/libgtest_main.a /usr/local/lib/libgtest.a решил посмотрел в папке /usr/local/lib/ библы gtest'а обнаружил, что есть только с форматом .a при этом имеются .dylib так понимаю, gtest использует статические библиотеки Мб смаку нужны динамические и как-то надо статические по особенному указать
поставил GTest на дебиан с теми же файлами попробовал скомпилить библу находит, но теперь не видит почему-то мой класс: /bin/ld: CMakeFiles/MyStringTests.dir/tests/MyStringTests.cpp.o: in function `MyString_capacity_Test::TestBody()': MyStringTests.cpp:(.text+0x1e): undefined reference to `MyString::MyString()' /bin/ld: MyStringTests.cpp:(.text+0x43): undefined reference to `MyString::ExtendCapacity2TimesThanNeed()' /bin/ld: MyStringTests.cpp:(.text+0x52): undefined reference to `MyString::capacity() const' /bin/ld: MyStringTests.cpp:(.text+0x12f): undefined reference to `MyString::size() const' /bin/ld: MyStringTests.cpp:(.text+0x224): undefined reference to `MyString::~MyString()' /bin/ld: MyStringTests.cpp:(.text+0x2aa): undefined reference to `MyString::~MyString()' collect2: error: ld returned 1 exit status gmake[2]: *** [CMakeFiles/MyStringTests.dir/build.make:99: MyStringTests] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:111: CMakeFiles/MyStringTests.dir/all] Error 2 gmake: *** [Makefile:91: all] Error 2 MyString ├── CMakeLists.txt ├── build │ └──... ├── tests │ └── MyStringTests.cpp └── src ├── main.cpp ├── MyString.h └── MyString.cpp мб что-то в CMakeLists.txt в корне что-то не так?
Моя сентенция будет немного не по теме, но с gtest вечно какие-то проблемы. Если нет необходимости использовать именно его, лучше поищите аналоги
это мой каприз захотелось изучить данный фреймворк для расширения имеющихся инструментов разработки он же самый популярный, потому в коммерции чаще всего встречается какой фреймворк можете посоветовать как аналог? 2catch встречал, но хз хорош ли он и сейчас проблема не в GTest, а в путях моего проекта / CMake
gtest надо носить со своим проектом как субмодуль и компилировать вместе с проектом и тогда никаких проблем с ним не будет. например, https://github.com/anatoly-spb/cmake-googletest-example
Я использую doctest, но их такое жуткое множество с примерно одинаковыми возможностями, что таки есть из чего выбрать
Там мало отличий, 90% функционала везде одинаковы
Тоже хотел это написать, но тем не менее никто не запрещает его использовать и в виде библиотеки
Обсуждают сегодня