首页 文章

链接错误GoogleMock与我在Linux下的C项目

提问于
浏览
0

我想在我的项目中使用GMock . 首先我编译了GMock和GTest . 我的行动顺序(我使用Linux):

  • git clone googlemock和googletest

  • 转到GIT / googletest / googlemock / build-aux /目录运行cmake ..然后make

  • 结果我得到了:libgmock.a和libgmock_main.a

My project 具有以下结构: buildincsrclib 目录 . 在构建目录中,我运行cmake ..和make . 在inc目录中,我放置了来自GIT / googletest / googlemock / include /和GIT / googletest / googletest / include /的所有 Headers . 在lib目录中只有libgmock.a . 在src - 我的项目的来源 .

我的 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 )时,我得到链接错误:

CMakeFiles / blockchain.dir / main.cpp.o:在函数main':main.cpp :( . text.startup 0x13):undefined reference totesting :: UnitTest :: GetInstance()'main.cpp :( . text . startup 0x1b):对测试的未定义引用:: UnitTest :: Run()'.. / lib / libgmock.a(gmock-all.cc.o):在functiontesting :: internal :: scoped_ptr :: reset(std ::) __cxx11 :: basic_stringstream)[clone .part.81] [clone .constprop.367]':gmock-all.cc :( . text 0x21a):对tests :: internal :: IsTrue(bool)'.. /的未定义引用lib / libgmock.a(gmock-all.cc.o):在functiontesting :: internal :: MutexBase :: AssertHeld()const [clone .constprop.368]':gmock-all.cc :( . text 0x274):未定义的参考test :: internal :: IsTrue(bool)'gmock-all.cc :( . text 0x2b2):undefined reference totesting :: internal :: GTestLog :: GTestLog(testing :: internal :: GTestLogSeverity,char const, int)'gmock-all.cc :( . text 0x2fd):对tests :: internal :: GTestLog :: ~GTestLog()'gmock-all.cc :( . text 0x312)的未定义引用:undefined reference totesting :: internal :: GTestLog ::〜GTestLog() '../lib/libgmock.a(gmock-all.cc.o):在函数测试:: internal :: Expect(bool,char const *,int,std :: __ cxx11 :: basic_string,std :: allocator> const&)[clone .part.51]':gmock-all.cc :( . text 0x910):undefined reference totesting :: Message :: Message()'gmock-all.cc :( . text 0x926):undefined reference to testing :: internal :: AssertHelper :: AssertHelper(testing :: TestPartResult :: Type,char const *,int,char const *)'gmock-all.cc :( . text 0x931):undefined reference totesting :: internal :: AssertHelper :: operator =(testing :: Message const&)const'gmock-all.cc :( . text 0x939):undefined reference to testing :: internal :: AssertHelper :: ~AssertHelper()'gmock-all.cc :( .text 0x94b):undefined reference totesting :: internal :: IsTrue(bool)'

还有很多其他人将错误联系起来 . 我究竟做错了什么?

1 回答

  • 0

    gmock 取决于 gtest . 你添加了前者,但没有添加后者 .

相关问题