GTest问题_itest.n z

GTest问题_itest.n z1、cmkae出现”C:/Users/xxx/gcc/bin/gcc.exe”isnotabletocompileasimpletestprogram.问题在camke时添加-DCMAKE_C_COMPILER=gcc,-DCMAKE_C_COMPILER=gcc-DCMAKE_CXX_COMPILER=g++,-DCMAKE_MAKE_PROGRAM=make指定gcc、g++与make2、测试私有成员函数出现__xfer_bufptrsredeclaredwithdif

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1、cmkae出现"C:/Users/xxx/gcc/bin/gcc.exe"is not able to compile a simple test program.问题

  • 在camke时添加-DCMAKE_C_COMPILER=gcc-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++-DCMAKE_MAKE_PROGRAM=make指定gcc、g++与make

2、测试私有成员函数出现__xfer_bufptrs redeclared with different access

添加以下代码,注意==不要包含gtest/gtest.h头文件==,若多包含可能会出现struct std::__cxx11::basic_stringbuf<_CharT, _Traits, _Alloc>::__xfer_bufptrs' redeclared with different access错误

#define private public
#define protected public
#undef private
#undef protected

为啥不能#define private public了?

3、make时,测试cpp文件出现 未定义 被测试cpp文件 的函数 undefined reference to Update(int const&)'

主要原因就是被测cpp文件是个孤立的文件
对应在CMakeLists.txt中即问题出在编写CMakeLists.txt时未包含被测cpp文件或者未正确包含被测cpp文件

  • 如:set(SOURCES src/function/environment/vehicle.cpp )
    路径不对导致找不到被测cpp文件

4、出现cannot find -lgtestcannot find -lgtest_main 错误

找不到libgtest.alibgtest_main.a造成的,检查CMakeLists.txt中的link_directories所包含的libgtest.a libgtest_main.a路径是否正确

5、CMakeLists.txt发出The maximum full path to an object file is 250 characters 警告

CMake Warning in CMakeLists.txt:
  The object file directory C:/Users/xxx/Desktop/WR/code/xxx/test/test_xxxx.cpp/
test_xxxx/build/CMakeFiles/gtest_xxxx.dir/ has 186 characters. 
  The maximum full path to an object file is 250 characters (see CMAKE_OBJECT_PATH_MAX). 
Object file C_/Users/xxx/Desktop/WR/code/xxx/test/test_xxx.cpp/test_xxxx/test_xxxx.cpp.obj  cannot be safely placed under this directory. The build may not work correctly.

可能是由于你的名字取的太长了,导致不能完整放下,后面在make时会出现错误

fatal error: opening dependency file CMakeFiles\gtest_xxx.dir\C_\Users\xxx\Desktop\WR\code\xxx\test\test_xxx.cpp\test_xxxx\test_xxxx.cpp.obj.d: No such file or directory 
   68 | }
      | ^
compilation terminated.

我将CMakeLists.txtadd_executabletarget_link_libraries中的名字修改短后再进行cmake与make,能够成功编译;

6、出现multiple definition of main错误

多次定义main函数导致的,如在CmakeLists.txt中调用了libgtest_main.a动态库,而在其他cpp文件中也出现了main函数,就会导致两次定义;
若想自己定义gtest的main函数,则在编写CMakeLists.txt时不引用libgtest_main.a动态库;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187943.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 图解phpstorm常用快捷键

    图解phpstorm常用快捷键

    2021年9月18日
    49
  • 关于pfx证书和cer证书

    关于pfx证书和cer证书Pfx证书,同时包含了公钥信息和私钥信息Cer证书只包含公钥信息如果客户端与网站通信时需要用到私钥(基本所有需要数字证书的网站都会用到私钥),则cer证书是无法正常访问网站的,网站会提示“该页要求客户证书”由于cer证书只包含公钥信息,一般只能用于解密使用(解密该公钥对应的私钥加密的数据)。Pfx证书既可以导出为pfx证书,也可以导出为cer证书。Pfx证书导出时,会提示是…

    2022年5月2日
    63
  • mysql executereader_C# 操作MySQL数据库, ExecuteReader()方法参数化执行T-SQL语句, 游标读取数据…

    mysql executereader_C# 操作MySQL数据库, ExecuteReader()方法参数化执行T-SQL语句, 游标读取数据…C#操作MySQL数据库需要引用”MySql.Data”,可通过两种方式获取。1、从NuGet下载”Install-PackageMySql.Data-Version6.8.7″推荐使用方式一,从NuGet上直接获取所需dll,方便快捷。C#操作MySQL数据库,ExecuteReader()方法参数化执行T-SQL语句,游标读取数据–ExecuteNonQuery()对连接执…

    2022年6月20日
    28
  • 开源跨境电商erp源码_商城java源码

    开源跨境电商erp源码_商城java源码1订单管理本模块支持多平台订单自动下载同步以及多帐号多店铺订单管理,方便用户对销售进行科学、直观的分类管理。包括订单处理,包装验货,称重出库,智能交运,交运日志,快速拣货,快速发货等子模块。2商品管理(SKU)商品管理模块,提供对亚马逊店逊商品进行线下管理的功能,包括但不限于中文名称、英文名称,售价等相应管理3.采购管理采购管理主要对于商品采购、入库、及供应商的设置,并于商品细分,包括采购管理、入库管理和供应商管理模块。4.物流管理此模块主要提供…

    2022年9月20日
    4
  • 《海量数据库解决方式》读后感

    《海量数据库解决方式》读后感

    2021年12月1日
    41
  • MySQL数据库面试题(2020最新版)

    MySQL数据库面试题(2020最新版)文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)…

    2022年6月13日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号