环境:Windows,cmake,gcc,g++,CLion
一、下载源码
二、解压并构建(我是怎么知道的?)
进入处于解压目录的cmd窗口

输入以下命令cmake以下

使用以下命令构建

100%即构建成功

找到这些东西,复制到CLion项目中,文件结构在后面
我这里是先创建一个gtest目录,在gtest目录下在创建一个lib目录,把libgtest.a和libgtest_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
根目录没有就看子目录


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |