我正在尝试在Visual Studio 2019上设置gmock。
I have my folder structure as below

在这里,我已将源代码(Gmock_project)配置为静态库。而且我已经将运行时库制成多线程DLL(/ MD)。我也没有使用任何预编译的头文件。
然后对于单元测试项目,我完成了以下属性。

1)从Google测试模板(Gmock_Sample)创建了一个新项目。

2)从Google安装了最新的gmock NuGet软件包(当前为v1.10.0)。

3)将文件gtest_main.cc添加到项目中。

4)我已经禁用了gtest_main.cc,gmock-all.cc和gtest-all.cc的预编译头。

5)我已经将Gmock_project的引用添加到测试项目中。

6)我已经在VC++ directories-> Include目录中包含了Gmock_project的路径。

7)我已经将运行时库制成多线程DLL(/ MD)。

8)我在链接器->常规->其他库目录中添加了Gmock_project.lib的路径。

9)我在链接器->输入->其他依赖项中包含了Gmock_project.lib。

每当我构建Gmock_Sample即测试项目时,我都会出错

2>test.obj : error LNK2005: main already defined in gtest_main.obj
2>E:\GMock\Gmock_Sample\Gmock_Sample\x64\Release\Gmock_Sample.exe : fatal error LNK1169: one or more multiply defined symbols found
2>Done building project "Gmock_Sample.vcxproj" -- FAILED.
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========

配置中可能出现什么问题?

最佳答案

我今天通过使用googletest系统信息库为Windows进行CMAKE Build,然后将静态.lib文件和 header 添加到我的项目中来解决此问题。
步骤如下:
1.克隆googletest存储库-> Git-Repository
2.下载Windows版CMAKE。 -> CMAKE For Windows
3.安装CMAKE,不要忘记创建系统变量以从CMD调用它。
4.转到克隆的存储库文件夹。
5.创建一个名为“build”的文件夹。
6.在解决方案应用程序中创建一个名为“googletest-package”的文件夹-> .lib文件和头文件将在此处导出。

  • 在cmd或powershell中运行以下命令:


  • 在您的构建文件夹中,您现在会找到googletest-distribution.sln->双击打开文件。
  • 在Visual Studio中,先构建ALL_BUILD项目,然后再建立INSTALL项目,这会将 header 和.lib文件移动到解决方案中的googletest-package文件夹中。

  • -第一阶段完成!
    对于第二阶段,我们需要执行以下操作,因为已经有了头文件和静态库,可以将它们链接到我们要测试的项目了。
  • 在您要测试的解决方案中创建一个新的c++项目。
    -> Richt单击解决方案->添加->新项目-> Google测试->配置为静态库并静态链接。
  • 我们需要首先从测试项目中自动删除自动安装的googletest NU软件包,以避免与我们自己的googletest版本重复和冲突。
    转到->工具-> NUGet软件包管理器->管理解决方案的NuGet软件包->卸载Microsoft.googletest.vXXX ...
  • 现在,添加“包含文件夹”并将.lib文件链接到测试项目,如下所示:
    ->右键单击测试项目-> C / C++选项卡->其他包含文件夹

  • 添加以下内容...
    “YourSolutionFolder \ googletest-package \ include”
    “YourSolutionFolder \ googletest-package \ include \ gmock”
    “YourSolutionFolder \ googletest-package \ include \ gtest”
  • 现在是“链接器”选项卡的时间...
    ->链接器->常规->其他库目录->添加“YourSolutionFolder \ googletest-package \ lib”
  • 添加.lib对象,如下所示:
    链接器->输入->其他依赖关系->添加以下内容...
    “gmockd.lib; gtestd.lib; mock_maind.lib; gtest_maind.lib”

  • 5.在您的pch.h文件中,添加以下行#include“gmock.h”。
    您现在应该能够构建所有项目并使用模拟运行测试!
    我希望这能有所帮助,但我认为它可以自动化。

    关于c++ - 在Visual Studio 2019上设置gmock的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62090203/

    10-11 23:21
    查看更多