vs - vs2015编译gtest-v1.12.1

文章目录

    • vs - vs2015编译gtest-v1.12.1
    • 概述
    • 点评
    • 笔记
    • 将工程迁出到本地后,如果已经编译过工程,将工程Revert, Clean up 干净。
    • 编译用的CMake, 优先用VS2019自带的
    • 打开VS2015X64本地命令行
    • 编译gtest工程
    • 测试
    • 安装
    • 自己写个测试工程,看看编译出来的gTest库是否正确
    • 测试工程代码
    • 备注
    • END

vs - vs2015编译gtest-v1.12.1

概述

前几天,有个同学私信我,问我在不在?
你谁啊,我在不在关你啥事啊? 我们认识么? 我们熟么? 凭啥理你啊? 秒删。

今天碰巧看到他在csdn上留的帖子,大概知道他要解决啥问题了。
在这里插入图片描述
在这里插入图片描述
他遇到的问题是用VS2015编译gtest1.12.1编译不过。

他提问题的方式有问题。
只说不行(如果行你就不提问题了)。
哪里不行啊?具体啥现象啊?
你具体咋操作的, 引起的不行啊?
就说不行,谁知道哪不行啊?
这样的帖子,除了吃饱了撑的2B, 谁会去回帖?

看到帖子下面,有2个所问非所答的回帖,都不知道这些回帖的人图个啥, 我被帖子双方的行为深深的震撼, 表示看不懂
有这个垃圾回帖的时间,悠闲的喝口水,安安静静的做个美男子不好么?

大家讨论问题,你要问就好好的问,我如果准备要要回答就好好的回答。
当然你可以好好的问,但是别人可以保留不回答的权利(大家萍水相逢,互不相欠。大家都有自己的事情要做, 没那个时间和心情)。

点评

这样的问题基本不需要问别人,只要开源库官方保证了可以用VS2015编译过,那就是一定能编译过。
那么大个google厂, 不骗工程师的。
在这里插入图片描述

如果编译不过,自己换几个CMake版本再试试,没特别的。
这种基础的编译问题,你问别人,大概率不会有人理你的(有质量的回答,垃圾回帖除外)。除非人家不经意的看到,心情还可以,在闲时说2句。
官方文档都说能编译过,为啥你编译不过?

笔记

将工程迁出到本地后,如果已经编译过工程,将工程Revert, Clean up 干净。

在这里插入图片描述
确认自己要编译的是gtest1.12.1
在这里插入图片描述

编译用的CMake, 优先用VS2019自带的

提取VS2019自带CMake的方法见笔记(vs2019 - 替换vs2019自带的cmake)
只要找到CMake的位置,拷贝出来用就行。

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake

我将VS2019的CMake拷贝到磁盘的单独位置,给其他命令行用。
在这里插入图片描述
VS2013/VS2015/VS2017是没有内建CMake的。
VS2019的这个CMake版本是 3.20.21032501-MSVC_2 ,不是公版的CMake, 是MS针对VS做了优化适配的版本。
如果用VS2019自带的这个 CMake-3.20.21032501-MSVC_2 可以,就优先用。
如果不行,再尝试自己换公版的CMake。

打开VS2015X64本地命令行

在这里插入图片描述
先确认一下,vs2015X64本地命令行是没有CMake的。

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>cmake --version
'cmake' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

将自己整理的VS2019CMake位置加入path.

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>set path=D:\my_dev\devToolSet\CMake_3d2_vs2019\bin;%path%

再确认一下,用的是不是VS2019自带的CMake?

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>cmake --version
cmake version 3.20.21032501-MSVC_2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

切到gTest库目录

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>cd /d D:\3rd_prj\googletest

D:\3rd_prj\googletest>

建立构建文件夹my_build

cls && mkdir .\my_build && cd .\my_build

用CMake构建VS2015版的gTest工程

cmake .. -G "Visual Studio 14 2015 Win64"
D:\3rd_prj\googletest\my_build>cmake .. -G "Visual Studio 14 2015 Win64"
-- Selecting Windows SDK version 10.0.14393.0 to target Windows 10.0.19045.
-- The C compiler identification is MSVC 19.0.24247.2
-- The CXX compiler identification is MSVC 19.0.24247.2
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Python: C:/Users/chenx/AppData/Local/Programs/Python/Python310/python.exe (found version "3.10.7") found components: Interpreter
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: D:/3rd_prj/googletest/my_build

D:\3rd_prj\googletest\my_build>

构建成功
在这里插入图片描述
在这里插入图片描述
用VS2015打开构建好的googletest-distribution.sln
在这里插入图片描述
选择x64_release
在这里插入图片描述

编译gtest工程

在这里插入图片描述
编译成功
在这里插入图片描述

测试

在这里插入图片描述

在这里插入图片描述
工程显示没有测试用例。
不管了,只要能编译过,就没问题的,工程品质由开源作者来保证。

安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将 C:\Program Files\googletest-distribution 目录归档,供自己的工程用。

自己写个测试工程,看看编译出来的gTest库是否正确

在这里插入图片描述
在这里插入图片描述
工程选为x64_Release,要和gTest库的编译模式匹配,否则编译不过。
在这里插入图片描述
在用VS2015编译时,我没有选编译方式,用的默认的。
在测试工程中发现,gTest的releaseX64库选的是/MT,
先将工程改成/MT
等测试通过了,再编译gTest库选项为/MD, 这自己工程的代码产生模式要一致。
在这里插入图片描述
编译通过了
在这里插入图片描述

测试工程代码

// gTestCaseB.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

// gTest工程的Main函数在库中,只需要提供测试用例即可
//int main()
//{
//    return 0;
//}

// 将gTest的include目录加入编译器选项(c++包含路径)
// D:\my_dev\my_local_git_prj\soft\exp\exp015_gtest\gTestCaseB\googletest-distribution\include

// 将gTest的lib目录加入编译器选项(c++库路径)
// 将 D:\my_dev\my_local_git_prj\soft\exp\exp015_gtest\gTestCaseB\googletest-distribution\lib

#include "gtest/gtest.h"
#pragma comment(lib, "gtest.lib")
#pragma comment(lib, "gtest_main.lib")

TEST(MyTestSuiteA, MyTestCaseA)
{
	int x = 1;
	int y = 2;

	ASSERT_TRUE(3 == (x + y));
}

在cmd中运行 D:\my_dev\my_local_git_prj\soft\exp\exp015_gtest\gTestCaseB\x64\Release\gTestCaseB.exe

C:\Users\me>D:\my_dev\my_local_git_prj\soft\exp\exp015_gtest\gTestCaseB\x64\Release\gTestCaseB.exe
Running main() from D:\3rd_prj\googletest\googletest\src\gtest_main.cc
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from MyTestSuiteA
[ RUN      ] MyTestSuiteA.MyTestCaseA
[       OK ] MyTestSuiteA.MyTestCaseA (0 ms)
[----------] 1 test from MyTestSuiteA (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (1 ms total)
[  PASSED  ] 1 test.

说明gTest库是可以正常用的。

备注

用CMake默认产生的工程,编译方式中的代码产生方式,可能和自己工程中的不一样。
需要调整为自己工程一致的代码产生方式。
在这里插入图片描述

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/693061.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用小黄鸟(HttpCanary)、VMOS Pro虚拟机对手机APP进行抓包(附带软件)

老规矩先看,效果图: 文章很详细,希望可以耐心看完,保证可以学会抓包,不再走冤枉路,小编在之前看过太多类似文章,折腾了太久才搞懂的,写这篇文章就是不想希望你们像小编一样再花时间…

谁也没想到来得如此之快,现在二三线城市就有电梯楼变成贫民窟了

独家首发 ----------------- 高层电梯楼贫民窟化,一直是业界担忧的问题,许多人以为这个问题应该还要十多年时间才会成为现实,然而有网友表示在二三线城市已出现高层电梯楼贫民窟化,时间比大家预期的早得多。 该网友说,…

easyexcel将csv转为excel处理数字问题

使用easyexcel可以将csv格式的文件转为.xlsx文件,但是csv中有很多数字,比如:"123","12.34","-111",默认情况下会将其作为字符串写入.xlsx文件,就如同下面一样,字符类型的数字…

Nginx学习笔记(九)location转发后,proxy_pass结尾带 / 和不带 / 的区别

目录 一、知识回顾二、proxy_pass 结尾带 / 和不带 / 的区别2.1 场景假设2.2 实战验证验证1:结尾带/的场景验证2:不带/的场景 2.3 结论 一、知识回顾 之前使用过 Nginx 的小伙伴或许都了解,Nginx 是一款用于请求转发的高性能中间件&#xff…

【数据结构(邓俊辉)学习笔记】图03——拓扑排序

文章目录 0. 概述1. 零入度算法1. 1 拓扑排序1. 2 算法 2. 零出度算法2.1 算法2.2 实现2.3. 复杂度 0. 概述 学习下拓扑排序 1. 零入度算法 1. 1 拓扑排序 首先理解下拓扑排序 其实老师经常干这事,如编讲义,将已经知道的知识点串起来变成讲课序列。那…

Vivado时序报告之Datasheet详解

目录 一、前言 二、Datasheet配置选项说明 2.1 Options 2.2 Groups 2.3 Timer Settings 2.4 Common Options 三、Datasheet报告 3.1 General Information 3.2 Input Ports Setup/Hold 3.3 Output Ports Clock-to-out 3.4 Setup between Clocks 3.5 Combinational…

盘点 2024 Google I/O 中的 Android 方向关键更新

这里写自定义目录标题 前言1. AI 编程助手2. 生成式AI 应用3. 不同屏幕尺寸适配4. 桌面小部件(Widget)5. 跨设备类型开发6. WearOS & 可穿戴7. Android for Car8. Android TV9. Google Home API10. Kotlin Multiplatform11. Jetpack Compose12. Andr…

HTML+CSS+JS 密码灯登录表单

效果演示 实现了一个登录页面,包括一个标题、两个输入框(用户名和密码)、一个登录按钮和一个眼睛图标。点击眼睛图标可以显示或隐藏密码。页面背景有两个圆形的半透明元素,整个页面使用了flex布局,并且在水平和垂直方向上都居中对齐。登录框使用了阴影效果和圆角边框,并且…

Jmeter 压力测测试的简单入门

下载安装 官方网站:Apache JMeter - Download Apache JMeter 下载完成解压即可。 配置 1. 找到 bin 目录下的 ApacheJMeter.jar 包,直接打开 如果向图片这样不能直接打开,就在此路径运行 CMD,然后输入下面的命令即可启动。 ja…

微信小程序学习笔记(4)

文章目录 1、< template >< / template >2、样式导入i、wxmlii、wxss 3、flex布局i、容器属性ii、项目属性 1、< template >< / template > 模板可以重复调用 首先要定义一个模板&#xff1a; <template name"test"><view>{{…

Python GUI编程:深入探索现代GUI库及其创新应用

目录 引言 Python GUI库概览 1. Tkinter 2. PyQt/PySide 3. wxPython 4. Kivy 5. PyGTK 6.FLTK (pyFLTK) 创新应用案例 1. 交互式数据分析工具 2. 智能物联网(IoT)仪表板 3. 增强现实(AR)辅助设计软件 4. 跨平台的科学计算软件 5. 交互式教育软件 实战示例1&…

Springboot整合SpringCache+redis简化缓存开发

使用步骤&#xff1a; 1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId> </dependency><dependency><groupId>org.springframework.boot</groupI…

MySQL—多表查询—标量子查询

一、引言 上篇学习完子查询的概念和分类。 现在来学习第一种子查询——标量子查询。 &#xff08;1&#xff09;标量子查询的基本概念 子查询返回的结果是单个值&#xff0c;也就是一行一列&#xff08;可以是数字、字符串、日期等&#xff09; 是一种最简单的子查询形式&am…

【机器人和人工智能——自主巡航赛项】进阶篇

文章目录 案例要求创建地图rviz仿真 保存地图坐标点定位识别训练主逻辑理解语音播报模块匹配二维码识别多点导航讲解视频其余篇章 案例要求 创建地图 ./1-gmapping.sh 把多个launch文件融合在sh文件里面 rviz仿真 rviz是rose集成的可视化界面&#xff0c;查看机器人的各项数…

iOS--block再学习

block再学习 什么是blockblock是带有自动变量的匿名函数block语法 block的实现block的实质截获自动变量__blcok说明符Block存储域__block变量存储域使用__block变量用结构体成员变量__forwarding的原因 截获对象 什么是block Block时c语言的扩充功能&#xff0c;它允许开发者定…

宝塔面板和 LNMP 环境下反代 HFish 蜜罐平台的正确方法

最近明月在热心站长好友的支持下搭建了安全、简单、有效并永久免费的蜜罐平台 HFish,因为 HFish 默认是以 https://IP:端口 的 Web 链接形式提供访问的,这会暴露蜜罐平台的真实服务器 IP 不说,还非常不便于快速的访问(反正明月是记不住 IP 的),所以就需要给部署好的 HFis…

Python爬取与可视化-豆瓣电影数据

引言 在数据科学的学习过程中&#xff0c;数据获取与数据可视化是两项重要的技能。本文将展示如何通过Python爬取豆瓣电影Top250的电影数据&#xff0c;并将这些数据存储到数据库中&#xff0c;随后进行数据分析和可视化展示。这个项目涵盖了从数据抓取、存储到数据可视化的整个…

《精通ChatGPT:从入门到大师的Prompt指南》第4章:避免常见错误

第4章&#xff1a;避免常见错误 在使用ChatGPT进行Prompt编写时&#xff0c;常见的错误可能会大大影响生成内容的质量和准确性。本章将详细讨论这些错误&#xff0c;并提供如何避免它们的建议。 4.1 不明确的指令 在使用ChatGPT时&#xff0c;一个常见的问题是指令不够明确。…

中电联系列二:rocket手把手教你理解中电联协议!

分享《一套免费开源充电桩物联网系统&#xff0c;是可以立马拿去商用的&#xff01;》 前 言 T/CEC102《电动汽车充换电服务信息交换》分为四个部分&#xff1a; ——第1部分&#xff1a;总则&#xff1b; ——第2部分&#xff1a;公共信息交换规范&#xff1b; ——第3部分&a…

微信机器人实现OCR识别录入数据

介绍 采用微信的hook插件&#xff0c;然后解析微信发来的数据图片&#xff0c;通过ocr识别 然后将数据落入execl表格中。同时有权限的人可以导出数据表格即可。 流程图 代码片 文本消息处理流程_robot.py elif msg.type 0x01: # 文本消息# 管理员列表dba_user_list [wxid_…