首页 > 其他分享 >CLion中配置gtest

CLion中配置gtest

时间:2023-09-27 14:15:37浏览次数:30  
标签:int 配置 add gtest test include CLion 目录

环境:Windows,cmake,gcc,g++,CLion

一、下载源码

二、解压并构建(我是怎么知道的?)

进入处于解压目录的cmd窗口

输入以下命令cmake以下

使用以下命令构建

100%即构建成功

找到这些东西,复制到CLion项目中,文件结构在后面

我这里是先创建一个gtest目录,在gtest目录下在创建一个lib目录,把libgtest.alibgtest_main.a放进去

把源码 googletest目录下的inlclude复制到第一个gtest目录下(使include与lib目录同级)

文件结构

│  CMakeLists.txt 
├─.idea                        
├─gtest
│  ├─gtest
│  │  │  gtest-assertion-result.h
│  │  │  gtest-death-test.h
│  │  │  gtest-matchers.h
│  │  │  gtest-message.h
│  │  │  gtest-param-test.h
│  │  │  gtest-printers.h
│  │  │  gtest-spi.h
│  │  │  gtest-test-part.h
│  │  │  gtest-typed-test.h
│  │  │  gtest.h
│  │  │  gtest_pred_impl.h
│  │  │  gtest_prod.h
│  │  │  
│  │  └─internal
│  │      │  gtest-death-test-internal.h
│  │      │  gtest-filepath.h
│  │      │  gtest-internal.h
│  │      │  gtest-param-util.h
│  │      │  gtest-port-arch.h
│  │      │  gtest-port.h
│  │      │  gtest-string.h
│  │      │  gtest-type-util.h
│  │      │  
│  │      └─custom
│  │              gtest-port.h
│  │              gtest-printers.h
│  │              gtest.h
│  │              README.md
│  │              
│  └─lib
│          libgtest.a
│          libgtest_main.a
│          
├─include
│      add.h
│      
├─lib
│      
├─src
│      add.cpp
│      CMakeLists.txt
│      
└─test
    │  CMakeLists.txt
    │  test_main.cpp

test目录 存放测试函数和主函数

cmake文件:

# 指定可执行文件的生成位置
# set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
aux_source_directory(. TEST_LIST)
# cmake三部曲
# 指定头文件-指定库文件-链接
# 指定头文件目录
include_directories(${PROJECT_SOURCE_DIR}/gtest ${PROJECT_SOURCE_DIR}/include)
# 指定静态链接库文件目录
link_directories(${PROJECT_SOURCE_DIR}/gtest/lib)
# 执行文件
add_executable(${PROJECT_NAME} ${TEST_LIST})
target_link_libraries(${PROJECT_NAME} gtest gtest_main add)

注意

这里在写路径时,必须留一个gtest目录,因为其中的.h文件中引用的都是gtest/***.h,正确示例如下:


如果写到能暴露gtest.h一系列头文件的目录,会产生编译时报错,而这些错误将需要你修改gtest.h一系列头文件的所有#include<>引入

错误示例


原因:

其中原因仔细思考也是很好理解的

src目录 存放被测试的函数

cmake文件:

aux_source_directory(. SRC_LIST)

#windows系统动态库生成lib文件命令
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

# 添加头文件路径
include_directories(${ROJECT_SOURCE_DIR}/include)

set(LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/lib")

message("start add_library add")
add_library(add ${SRC_LIST})
message("add_library add finished")

根目录下的cmake文件:

cmake_minimum_required(VERSION 3.23.2)
project(WeightGraph)

set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER g++)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(src)
add_subdirectory(test)

include目录 存放头文件用于文件链接

add.h

#ifndef WEIGHTGRAPH_ADD_H
#define WEIGHTGRAPH_ADD_H

int add(int ,int );

#endif //WEIGHTGRAPH_ADD_H

add.cpp

int add(int n1, int n2)
{
    return n1 + n2;
}

test_main.cpp

#include <iostream>
#include "add.h"
#include "gtest/gtest.h"

class TestForAdd : public testing::Test {
    void SetUp() {}

    void TearDown(){}
};

TEST_F(TestForAdd,test1){
    ASSERT_EQ(12,add(4,8));
}

TEST_F(TestForAdd,test2){
    EXPECT_EQ(5,add(2,3));
}

TEST_F(TestForAdd,test3){
    EXPECT_EQ(4,add(1,2));
}

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

查看README.md

想知道什么就看谁的README.md
根目录没有就看子目录

标签:int,配置,add,gtest,test,include,CLion,目录
From: https://www.cnblogs.com/SkySource/p/17732374.html

相关文章

  • 如何配置swgger以及使用方法(postman,apipost)
    一.如何配置swgger1.引入依赖:我配置的是swgger2,如果需要其他版本,可以自行百度<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.4.0</version>......
  • SpringBoot配置文件加载过程
    前置知识配置属性抽象和各种实现类PropertySource<T>下面是抽象类属性源和它的两个内部实现类介绍//抽象父类publicabstractclassPropertySource<T>{/**属性源名称**/protectedfinalStringname;/**属性源数据**/ protectedfinalTso......
  • Nginx配置后无法解析PHP问题
    Nginx配置后无法解析PHP问题#Formoreinformationonconfiguration,see:#  *OfficialEnglishDocumentation:http://nginx.org/en/docs/#  *OfficialRussianDocumentation:http://nginx.org/ru/docs/ usernginx;worker_processesauto;error_log/var/l......
  • 搞定!详解MeterSphere 配置外部Mysql5.7的全过程
     最近试用了MeterSphere做接口测试平台,感觉使用起来非常方便,最重要的是开源免费!官方文档还是非常详细的,这里我就不多介绍了,感兴趣的同学可以参考:https://metersphere.io/docs/v2.x/经过讨论,决定在测试团队推广。由于公司数据库管理策略,数据库必须通过dba统一管理,所以需要MeterSph......
  • Idea配置热部署插件Jrebel
    Idea配置热部署插件Jrebel先从pulgins下载插件jrebelidea内配置jrebel百度下载reverseproxy_windows_amd64.exe,下载后直接打开。会显示一个终端控制台。之后不用管挂那做下一步(这个界面从Idea的help最下面有JRebel-Activation打开)teamURL第一行http://localhost:8888/......
  • centos7 网卡配置文件解读
    借的图 另外,/etc/resolv.conf 是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数 nameserver 8.8.8.8借鉴的:https://blog.csdn.net/lcr_happy/article/details/......
  • ubuntu系统进行keepalived配置
    需要四大步骤先安装keepalived组件创建并配置keepalived.conf文件创建并配置check_nginx.sh文件检查状态,验证。1.安装keepalived组件sudoapt-getinstallkeepalived2.创建并配置keepalived.conf文件cd/etc/keepalived/sudotouchkeepalived.confsudovikeep......
  • Debian11.7 配置vi非兼容模式
    对于最小化安装的Debian11.7,起初有一个问题给我造成了困扰:那就是当我使用vi编辑文本文件时,我无法通过键入“i”来切换到输入模式,或者说,其实的确进入了输入模式,但是底部行并没有显式进行提示,另外,我无法使用Backspace键来删除字符,Delete键是可以删除字符的,不过这不符合我正常......
  • 五分钟k8s入门到实战-应用配置
    背景在前面三节中已经讲到如何将我们的应用部署到k8s集群并提供对外访问的能力,x现在可以满足基本的应用开发需求了。现在我们需要更进一步,使用k8s提供的一些其他对象来标准化我的应用开发。首先就是ConfigMap,从它的名字也可以看出这是用于管理配置的对象。ConfigMap不......
  • Jenkins配置邮箱
    版本环境:Jenkins2.414.2邮箱:@163.com网易邮箱第一步:首页进入System第二步:开启邮箱设置 授权码就是第三步中需要配置的【密码】第三步:配置参数可以在网页上ctrl+f搜索框出来的标题进行填写,记得保存。第四步:构建测试*小插曲:第三步配置参数中那个usessl得看情......