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

Linking errors GoogleMock with my C++project under linux(在Linux下将错误GoogleMock与我的C++项目相链接)

本文介绍了在Linux下将错误GoogleMock与我的C++项目相链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的项目中使用GMock。首先,我编译了GMock和GTest。我的操作顺序(我使用Linux):

  1. Git克隆googlemock和googletest
  2. 转到git/googletest/googlemock/Build-aux/目录run cmake.. 然后制作
  3. 我得到的结果是:libgmock.a和libgmock_main.a

My project的结构为:构建Incsrclib目录。在Build目录中,我运行cmake..并制造出。在Inc目录中,我放置了来自git/googletest/googlemock/include/和git/googletest/googletest/Include/的所有标头。在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/lockchain.dir/main.cpp.o:in Function Main‘: Main.cpp:(.ext.start+0x13):未定义的引用 ToTesting::UnitTest::GetInstance()‘ Main.cpp:(.ext.startup+0x1b):未定义对测试的引用::UnitTest::Run()‘../lib/libgmock.a(gmock-all.cc.o):in 函数测试::内部::Scope_PTR

::Reset(std::_cxx11::BASIC_STRIGREAM)[克隆.part.81][克隆.stup.367]‘: Gmock-all.cc:(.text+0x21a):未定义对测试的引用::Internal::IsTrue(Bool)‘../lib/libgmock.a(gmock-all.cc.o):in Functiontesting::internal::MutexBase::AssertHeld()常量[克隆 .stup.368]‘: Gmock-all.cc:(.text+0x274):未定义的测试引用::Internal::IsTrue(Bool)‘gmock-all.cc:(.text+0x2b2):未定义 参考文献 Totesting::internal::GTestLog::GTestLog(testing::internal::GTestLogSeverity, 字符常量,整型)‘ Gmock-all.cc:(.text+0x2fd):未定义对测试的引用::内部::GTestLog::~GTestLog()‘gmock-all.cc:(.text+0x312): 未定义对Testing::Internal::GTestLog::~GTestLog()‘的引用 ../lib/libgmock.a(gmock-all.cc.o):在函数测试中::Internal::Expect(bool,char const*,int, Std::_cxx11::BASIC_STRING, Std::allocator>常量(&;)[克隆.part.51]‘: Gmock-all.cc:(.text+0x910):未定义的引用 ToTesting::Message::Message()‘ Gmock-all.cc:(.Text+0x926):对testing::internal::AssertHelper::AssertHelper(testing::TestPartResult::Type,的引用未定义 Char const*,int,char const*)‘gmock-all.cc:(.text+0x931):未定义 参考文献 Totesting::internal::AssertHelper::operator=(testing::Message常量(&A;) Const‘ Gmock-all.cc:(.Text+0x939):对testing::internal::AssertHelper::~AssertHelper()‘的引用未定义 Gmock-all.cc:(.text+0x94b):未定义的引用 ToTesting::Internal::IsTrue(Bool)‘

和许多其他链接错误。我做错了什么?

推荐答案

gmock取决于gtest。您添加了前者,但没有添加后者。

这篇关于在Linux下将错误GoogleMock与我的C++项目相链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:在Linux下将错误GoogleMock与我的C++项目相链接