首页 > 系统相关 >windows下C++配置googletest过程记录

windows下C++配置googletest过程记录

时间:2024-07-06 21:31:03浏览次数:37  
标签:vector target windows C++ int gtest googletest build

文章目录

下载googletest

Release v1.14.0 · google/googletest · GitHub

将googletest解压到项目目录并创建build文件夹

image.png
在googletest目录中创建build文件夹

image.png

编译googletest

在build文件夹下打开powershell,执行以下命令进行编译

cmake .. -G "MinGW Makefile"
# 如果不行也可以执行下面的命令
# cmake .. -G "Visual Studio 17 2022"

cmake --build .

编译完成后会在build文件夹下生成若干文件

image.png

在项目的CMakeLists.txt文件中添加相关依赖

项目结构如图所示:

image.png

使用的CMakeLists.txt文件如下:

cmake_minimum_required(VERSION 3.25)
project(CppLearnAndTest)

set(CMAKE_CXX_STANDARD 23)

# 添加googletest子目录
add_subdirectory(googletest-1.14.0)

# 指定可执行文件的产生路径
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY  ${CMAKE_CURRENT_SOURCE_DIR}/cmake-build-debug)

# gtest 头文件
include_directories(googletest-1.14.0/googletest/include)

# gmock 头文件
include_directories(googletest-1.14.0/googlemock/include)

# 指定静态链接文件目录
link_directories(${PROJECT_SOURCE_DIR}/googletest-1.14.0/build/lib/Debug)

# 构建可执行文件
add_executable(CppLearnAndTest leetcode/easy/lc1/lc1.cpp)

# 设置依赖并执行链接
set(GTEST_LIBS gtest gmock gtest_main gmock_main pthread)
target_link_libraries(CppLearnAndTest ${GTEST_LIBS})

其中的文件路径要按实际情况处理。

编写测试并执行

以两数之和为例,完整文件如下

#include "gtest/gtest.h"
#include "vector"

using namespace std;

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int n = nums.size();
        for (int i = 0; i < n; ++i) {
            for (int j = i + 1; j < n; ++j) {
                if (nums[i] + nums[j] == target) {
                    return {i, j};
                }
            }
        }
        return {};
    }
};

TEST(lc1, test_1) {
    vector<int> input = {2,7,11,15};
    int target = 9;
    vector<int> ret = {0,1};

    Solution s = Solution();
    EXPECT_EQ(ret, s.twoSum(input, target));
}

TEST(lc1, test_2) {
    vector<int> input = {3,2,4};
    int target = 6;
    vector<int> ret = {1,2};

    Solution s = Solution();
    EXPECT_EQ(ret, s.twoSum(input, target));
}

TEST(lc1, test_3) {
    vector<int> input = {3,3};
    int target = 6;
    vector<int> ret = {0,1};

    Solution s = Solution();
    EXPECT_EQ(ret, s.twoSum(input, target));
}

int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

参考

googletest windows平台安装使用_window安装googletest build type-CSDN博客

windows从零搭建googlemock之c++测试工程(CLion)_gmock多线程-CSDN博客

使用 cmake 对 googletest 的依赖问题:gtest/gtest.h 没有这样的文件或目录答案 - 爱码网 (likecs.com)

标签:vector,target,windows,C++,int,gtest,googletest,build
From: https://blog.csdn.net/lnluozi/article/details/140236000

相关文章

  • C++初学者指南-4.诊断---用gdb调试
    C++初学者指南-4.诊断—用gdb调试幻灯片gdb/前端gdbGNU的命令行调试器cgdb基于终端的gdb前端Linux安装:sudoapt-getinstallcgdbgdbgui基于浏览器的gdb前端网址:https://gdbgui.com/安装:sudopipinstallgdbguiQtCreator可以连接gdbVisualStudioCode可以连接gdbV......
  • C++初学者指南-3.自定义类型(第一部分)-异常
    C++初学者指南-3.自定义类型(第一部分)-异常文章目录C++初学者指南-3.自定义类型(第一部分)-异常简介什么是异常?第一个示例用途:报告违反规则的行为异常的替代方案标准库异常处理问题和保证资源泄露使用RAII避免内存泄漏!析构函数:不要让异常逃脱!异常保证无抛出异常保......
  • C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例
    C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例目录C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例1、概述2、实现效果3、主要代码4、源码地址更多精彩内容......
  • c++ u7-02-高精度乘法
    本节课作业:链接:https://pan.baidu.com/s/13-FC86jSHGziRDA8lqzimg?pwd=owv1提取码:owv1   高精度乘法             #include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;stringx,y;inta......
  • C++算法实践04-寻找两个正序数组的中位数
    一、题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log(m+n)) 。示例1:输入:nums1=[1,3],nums2=[2]输出:2.00000解释:合并数组=[1,2,3],中位数2示例2:输入:nu......
  • Windows防火墙 日志 自定义 以记录被丢弃的数据包和成功的连接日志。以下是一个示例.r
     配置注册表,以记录被丢弃的数据包和成功的连接日志 WindowsRegistryEditorVersion5.00;WindowsDefender防火墙日志记录设置[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy];以下是针对不同配置文件的设置,例如......
  • 使用c++实现图形化文件浏览
       代码中使用了SDL2库,需要先安装并正确配置相关的开发环境。还需要添加字体加载和处理的代码,为图方便,省略。#include<iostream>#include<SDL2/SDL.h>#include<SDL2/SDL_image.h>#include<vector>#include<string>#include<filesystem>constintSCREEN......
  • C++题解(3) 信息学奥赛一本通: 1013:温度表达转化 洛谷:B2013 温度表达转化 土豆编程:M
    【题目描述】利用公式 C=5×(F−32)÷9C=5×(F−32)÷9(其中CC表示摄氏温度,FF表示华氏温度)进行计算转化,输入华氏温度FF,输出摄氏温度CC,要求精确到小数点后55位。【输入】输入一行,包含一个实数FF,表示华氏温度。(F≥−459.67)(F≥−459.67)【输出】输出一行,包含一个......
  • day01 初学c++第一章
    目录一、前置代码以及cout打印两条预处理代码:count打印语句:二、符号常量 三、标识符的命名规范四、数据类型 c++中整数类型的表现形式:在c++中,数字存在有符号和无符号之分的c++中实型的表现形式:代码所用函数:c++中字符型的表现形式:基础运算总结:转义字符c++中字......
  • C++开发调试工具:GDB调试,windebug调试,adb调试
    我们在C++开发过程中时常避免不了要调试追踪,一下介绍最主流的三种调试工具:一.GDB调试1.coredump文件:coredump文件是程序异常时系统产生的错误日志文件,即核心转储文件;编译一个debug程序,必须是debug版本,否则无法产生coredump文件;编译命令:g++test.cpp-omytest-g,必须要......