Я хочу использовать GMock в своем проекте. Первым делом я скомпилировал GMock и GTest. Последовательность моих действий (я использую Linux):
- git clone googlemock и googletest
- перейдите в каталог GIT / googletest / googlemock / build-aux / и запустите cmake.
а затем сделать
- В результате я получил: libgmock.a и libgmock_main.a
My project
имеет структуру: build , inc , src и lib каталогов. В каталоге build я запускаю cmake .. и делаю. В inc dir я разместил все заголовки из GIT / googletest / googlemock / include / и GIT / googletest / googletest / include /. В lib dir лежит только libgmock.a. В src - источники моего проекта.
My CMakeLists.txt
содержит:
project(blockchain)
cmake_minimum_required(VERSION 2.6)
set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR})
file(GLOB CPPS "*.cpp")
include_directories("../inc/")
link_directories("../lib/")
add_definitions(-Wall -O2 -std=c++11)
add_executable(${PROJECT_NAME} ${CPPS})
target_link_libraries(blockchain gmock)
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
Когда я пытаюсь сделать свой проект (набрав cmake .. && make
в build dir), я получаю ошибки компоновки:
CMakeFiles / blockchain.dir / main.cpp.o: в функции main ':
main.cpp :(. text.startup + 0x13): неопределенная ссылка
totesting :: UnitTest :: GetInstance ()»
main.cpp :(. text.startup + 0x1b): неопределенная ссылка на тестирование :: UnitTest :: Run () '../lib/libgmock.a(gmock-all.cc.o): In
functiontesting :: внутренний :: scoped_ptr
:: reset (std :: __cxx11 :: basic_stringstream) [clone .part.81] [clone .constprop.367] ':
gmock-all.cc:(.text+0x21a): неопределенная ссылка на тестирование :: internal :: IsTrue (bool) '../lib/libgmock.a(gmock-all.cc.o): в
functiontesting :: internal :: MutexBase :: AssertHeld () const [клон
.constprop.368]:
gmock-all.cc:(.text+0x274): неопределенная ссылка на тестирование :: internal :: IsTrue (bool) 'gmock-all.cc:(.text+0x2b2): undefined
ссылка
totesting :: внутренний :: GTestLog :: GTestLog (тестирование :: внутренний :: GTestLogSeverity,
char const, int) '
gmock-all.cc:(.text+0x2fd): неопределенная ссылка на тестирование :: internal :: GTestLog :: ~ GTestLog () 'gmock-all.cc:(.text+0x312):
неопределенная ссылка на тестирование :: internal :: GTestLog :: ~ GTestLog () '
../lib/libgmock.a(gmock-all.cc.o): в тестировании функций :: internal :: Expect (bool, char const *, int,
станд :: __ cxx11 :: basic_string,
std :: allocator> const &) [clone .part.51] ':
gmock-all.cc:(.text+0x910): неопределенная ссылка
totesting :: Сообщение :: Сообщение ()»
gmock-all.cc:(.text+0x926): неопределенная ссылка на тестирование :: internal :: AssertHelper :: AssertHelper (testing :: TestPartResult :: Type,
char const *, int, char const *) 'gmock-all.cc:(.text+0x931): не определено
ссылка
totesting :: internal :: AssertHelper :: operator = (тестирование :: Сообщение const &)
Const»
gmock-all.cc:(.text+0x939): неопределенная ссылка на тестирование :: internal :: AssertHelper :: ~ AssertHelper () '
gmock-all.cc:(.text+0x94b): неопределенная ссылка
totesting :: Внутренняя :: IsTrue (BOOL) '
И многие другие, связывающие ошибки. Что я делаю не так?