Связывание ошибок GoogleMock с моим C ++ проектом под Linux - PullRequest
0 голосов
/ 12 мая 2018

Я хочу использовать GMock в своем проекте. Первым делом я скомпилировал GMock и GTest. Последовательность моих действий (я использую Linux):

  1. git clone googlemock и googletest
  2. перейдите в каталог GIT / googletest / googlemock / build-aux / и запустите cmake. а затем сделать
  3. В результате я получил: 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) '

И многие другие, связывающие ошибки. Что я делаю не так?

1 Ответ

0 голосов
/ 14 мая 2018

gmock зависит от gtest.Вы добавили первое, но не второе.

...