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_2CMake 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\googletestD:\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_buildD:\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
相关文章:
vs - vs2015编译gtest-v1.12.1
文章目录 vs - vs2015编译gtest-v1.12.1概述点评笔记将工程迁出到本地后,如果已经编译过工程,将工程Revert, Clean up 干净。编译用的CMake, 优先用VS2019自带的打开VS2015X64本地命令行编译gtest工程测试安装自己写个测试工程,看看编译出来的…...
你好GPT-4o——对GPT-4o发布的思考与看法
你好GPT-4o 前言 2024年5月13日,OpenAI官网发布了他们的新一代自然语言处理交互系统——GPT-4o。这是OpenAI继GPT4之后又一个新的旗舰模型。 GPT-4o(“o”代表“omni”)是迈向更自然的人机交互的一步——它接受文本、音频、图像和视频的任意…...
QT 信号和槽 多对一关联示例,多个信号,一个槽函数响应,多个信号源如何绑定一个槽函数
三个顾客 Anderson、Bruce、Castiel 都要订饭,分别对应三个按钮,点击一个按钮,就会弹出给该顾客送饭的消息。注意这个例子只使用一个槽函数,而三个顾客名称是不一样的,弹窗时显示的消息不一样,这需要一些 技…...
宝塔nginx配置
将跟php有关的注释掉: 添加: #解决vue刷新404问题try_files $uri $uri/ /index.html; location /prod-api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header…...
容器化实践:DevOps环境下的容器交付流程
DevOps的兴起是为了应对市场和消费者对技术应用的不断增长的需求。它的目标是构建一个更快的开发环境,同时保持软件的高质量标准。DevOps还致力于在敏捷开发周期中提升软件的整体品质。这一目标的实现依赖于多种技术、平台和工具的综合运用。 结合容器化技术与DevO…...
Linux---sudo命令
文章目录 目录 文章目录 一.sudo命令简介 二.sudo 命令的特点 三.sudo 相关文件 四.sudo 命令授权配置 一.sudo命令简介 sudo 命令全称“SuperUser Do”,是Linux系统中的一个命令能够使普通用户以超级用户身份去执行某些命令。 二.sudo 命令的特点 sudo能够授权…...
前后端分离与实现 ajax 异步请求 和动态网页局部生成
前端 <!DOCTYPE html><!-- 来源 --> <!-- https://cloud.tencent.com/developer/article/1705089 --> <!-- https://geek-docs.com/ajax/ajax-questions/19_ajax_javascript_send_json_object_with_ajax.html --> <!-- 配合java后端可以监听 --&…...
Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略
Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略 文章目录 Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略一、引言二、CUDA、cuDNN与PyTorch-GPU介绍三、安装准备1. 查看支持的CUDA版本2. 查看已安装的CUDA版本3. 查看支持的PyTorch版本 四、卸载旧版CUDA五、下载…...
Android Dialog使用汇总
Dialog分类 AlertDialog Dialog 类是对话框的基类,官方建议我们不要直接实例化它,而是使用其子类来获取实例。AlertDialog是系统提供的一个直接子类,它能帮助我们快速构建出不同类型的弹窗。接下来就看下各种类型弹窗的使用。 1、普通对话框…...
[数据集][目标检测]足球场足球运动员身份识别足球裁判员数据集VOC+YOLO格式312张4类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):312 标注数量(xml文件个数):312 标注数量(txt文件个数):312 标注类别…...
学习分享-声明式的 HTTP 客户端OpenFeign
OpenFeign 详细介绍 最近在学习中有用到OpenFeign,也在网上查找了相关资料,做下分享。 一、概述 OpenFeign 是一个声明式的 HTTP 客户端,它使得调用 REST API 变得更加简单和直观。通过 OpenFeign,开发者只需定义接口并添加注解…...
python Tk 获取输入框内容,分割内容
创建输入框、一个按钮和一个标签的GUI。 用户可以在输入框中输入文本,点击按钮后,程序将在控制台打印输入的文本(已经分割为列表),并在GUI中的标签上显示一些静态文本。 import tkinter as tk# 创建主窗口 root tk.…...
第十二章:净世山的终极考验
虽然击败了黑袍人,但四人并未有丝毫的松懈。他们深知,净世山的考验远不止如此。果然,随着黑袍人的倒下,整个山顶开始剧烈震动,仿佛有什么东西即将苏醒。“小心,这山顶似乎有变!”赵无极大声提醒…...
linux常用命令及其选项
1、常用命令 1.1、ls 选项说明-a显示所有文件及目录 (包括隐藏文件)-i显示inode-A同 -a选项 ,但不列出 "." (目前目录) 及 ".." (父目录)-l列出信息详细(如文件型态、权限、拥有者、文件大小等)-R递归显示(若目录下有文件,则以下之…...
虚拟存储器概述
目录 常规存储器管理方式的特征和局部性原理 缺点 局部性原理 局部性原理的应用 1. 提高内存利用率 2. 实现按需装入 3. 支持内存共享 4. 提高系统稳定性 虚拟存储器的定义与特征 虚拟存储器的特征 虚拟存储器的实现机制 虚拟存储器的工作过程 虚拟存储器的优点 虚…...
C++对象池设计与实现
目录 一、对象池简介 1.1 池化技术 1.2 什么是对象池 1.3 对象池分配策略 二、C new和delete运算符重载 三、实现一个对象池框架 3.1 策略接口 四、实现几种对象池的分配策略 4.1 数组策略 4.2 堆策略 编辑 4.3 栈策略 4.4 区块策略 一、对象池简介 1.1 池化技…...
电商系统中热库和冷库的使用与数据转换
在现代电子商务系统中,数据的高效管理和存储是关键。电商平台每日处理海量数据,这些数据不仅包括用户行为、交易记录,还涵盖库存信息、商品详情、物流信息等。为了优化数据存储和查询效率,电商系统通常采用热库(Hot St…...
【LeetCode:312. 戳气球+ 动态规划】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...
拉格朗日乘子将不等式约束转化为等式约束例子
拉格朗日乘子将不等式约束转化为等式约束例子 在优化问题中,常常需要将不等式约束转化为等式约束。使用拉格朗日乘子法,可以通过引入松弛变量将不等式约束转换为等式约束,然后构造拉格朗日函数进行求解。 拉格朗日乘子法简介 拉格朗日乘子法是求解带约束优化问题的一种方…...
有效的括号(oj题)
一、题目链接 https://leetcode.cn/problems/valid-parentheses/submissions/538110206 二、题目思路 利用栈的性质,后进先出 1.依次读取字符串,判断是否为左括号,如果是,就将其入栈。 2.如果读取的不是左括号,就说…...
别再为气象数据发愁!手把手教你用HYSPLIT做后向轨迹分析(附GDAS1数据下载指南)
从零掌握HYSPLIT后向轨迹分析:气象数据获取与实战技巧全解析 当你在环境科学或大气污染研究中首次接触HYSPLIT模型时,最令人头疼的往往不是软件操作本身,而是那些看似简单却暗藏玄机的气象数据准备工作。我曾见过无数研究生在深夜实验室里反复…...
amlogic-s9xxx-armbian项目全指南:从闲置设备到智能服务器的转变
amlogic-s9xxx-armbian项目全指南:从闲置设备到智能服务器的转变 【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像,支持多种设备,允许用户将安卓TV系统…...
2026年AI大爆发:DeepSeek、Claude、Gemini三强鼎立,智能体应用成为新战场
进入2026年,AI领域迎来前所未有的激烈竞争格局。DeepSeek凭借极低的训练成本和开源策略强势出圈,R1模型在推理能力上直追GPT-o1,引发全球AI圈震动;Anthropic的Claude 3.7 Sonnet推出了扩展思考模式,在代码和复杂推理任…...
基于人工电场搜索智能优化算法的水库发电和供水优化调度
基于人工电场搜索智能优化算法的水库发电和供水优化调度; 代码为MATLAB编写,可直接运行; 含有实例数据,点击即可运行,替换成自己数据点击即可出结果,如图。在水库管理中,实现发电和供水的优化调…...
大三大学生挖洞收入十万背后:网安圈的“天才少年”,普通人能复制吗?
大三学生挖洞收入十万背后:网安圈的 “天才少年” ,普通人能复制吗? SRC首期学员战绩疯传:大四小白45天回本6K?大三在读2个月挖洞收获六位数? 当朋友圈被"零基础挖洞暴富"的捷报疯狂刷屏时&…...
行业观察2026年3月五家geo优化服务商实测对比与选型决策指南
在2026年3月的智能商业环境中,企业竞争的焦点已从信息曝光转向认知塑造。随着生成式AI全面接管用户的信息获取与决策流程,品牌若无法在AI的“思考”过程中占据一席之地,便意味着在未来的商业对话中失语。第三方独立数据显示,2025年…...
Python服务内存持续增长?5个被忽略的__del__陷阱+3种RAII式资源封装模板,今天必须修复!
第一章:Python服务内存持续增长的智能体诊断全景图Python服务在长期运行中出现内存持续增长,是生产环境中高频且隐蔽的稳定性风险。传统人工排查依赖经验与断点调试,难以覆盖异步任务、闭包引用、第三方库缓存等复杂场景。本章构建一个面向可…...
vLLM-v0.17.1效果展示:128K上下文下PagedAttention稳定性验证
vLLM-v0.17.1效果展示:128K上下文下PagedAttention稳定性验证 1. vLLM框架核心能力 vLLM是一个专为大语言模型推理优化的高性能服务库,最新发布的v0.17.1版本在超长上下文处理能力上实现了重大突破。这个最初由加州大学伯克利分校开发的框架࿰…...
告别内存焦虑:用DiskANN在单机上搞定十亿向量检索的完整配置与调优指南
告别内存焦虑:用DiskANN在单机上搞定十亿向量检索的完整配置与调优指南 当你的推荐系统需要处理超过1亿条商品特征向量,或是生物医药团队要匹配数十亿分子结构时,传统内存索引方案会让服务器内存条价格直接突破年度预算。这时DiskANN就像一位…...
如何设计优雅的RESTful API:Blade框架完整指南
如何设计优雅的RESTful API:Blade框架完整指南 【免费下载链接】blade :rocket: Lightning fast and elegant mvc framework for Java8 项目地址: https://gitcode.com/gh_mirrors/bl/blade 想要在Java 8中快速构建高性能、优雅的RESTful API吗?B…...
