👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术
【GTest】使用CMakeLitsts.txt构建Windows和Linux的跨平台GoogleTest项目
1. 构建静态库
- Linux构建参考我的文章:【点击这里】
- windows构建静态库参考我的文章:【点击这里】
2. 构建项目文件夹
(1)创建GtestAPI的文件夹,作为项目的文件夹。
(2)在GtestAPI文件夹下:
- 创建include文件夹用于存放gtest的头文件
- 创建CMakeLists.txt用于编写构建脚本
- 创建lib文件夹用于存放静态库
(3)在lib文件夹下:
- 创建debug文件加和release文件夹用于存放windows和linux编译出来的静态库(.lib和.a文件)
(4)创建GtestAPI.cpp 用来编写测试代码。
整体的目录结构如下:
GtestAPI
├─ include
├─ CMakeLists.txt
└─ lib
├─ debug
└─ release
3. include文件夹
将克隆下来的googletest-main的文件夹中的include文件夹(路径:D:\googletest-main\googletest\include
)中的整个gtest文件夹复制到你的项目目录中。
4. lib文件夹
将你在Linux构建好的静态库(release和debug模式)和windows上构建好的静态库(release和debug模式)分别复制到 /GtestAPI/lib/release
和/GtestAPI/lib/debug
文件夹中:
注意:此处必须是windows和Linux系统在对应模式下(release/debug)构建出来的静态库。静态库必须与文件夹一一对应,否则会报错。
5. CMakeLists.txt
编写CMakeLists.txt构建文件,内容如下(复制到CMakeLists.txt中即可):
cmake_minimum_required(VERSION 3.12)
project(GtestAPI)
set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/GtestAPI.cpp)
set(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
add_executable(GtestAPI ${SOURCES})
target_include_directories(GtestAPI PRIVATE ${INCLUDE_DIR})
set(DEBUG_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/debug)
set(RELEASE_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/release)
if(CMAKE_BUILD_TYPE MATCHES Debug)
# debug模式
target_link_directories(GtestAPI PRIVATE ${DEBUG_LIB_DIR})
target_link_libraries(GtestAPI PRIVATE gmock_main gtest_main)
# 设置debug模式下的编译选项
target_compile_definitions(GtestAPI PRIVATE _ITERATOR_DEBUG_LEVEL=2)
if(WIN32)
target_compile_options(GtestAPI PRIVATE /MDd)
else()
find_package(Threads REQUIRED)
target_link_libraries(GtestAPI PRIVATE Threads::Threads)
target_compile_options(GtestAPI PRIVATE -g)
endif()
else()
# release模式
target_link_directories(GtestAPI PRIVATE ${RELEASE_LIB_DIR})
target_link_libraries(GtestAPI PRIVATE gmock_main gtest_main)
# 设置release模式下的编译选项
target_compile_definitions(GtestAPI PRIVATE _ITERATOR_DEBUG_LEVEL=0)
if(WIN32)
target_compile_options(GtestAPI PRIVATE /MD)
else()
find_package(Threads REQUIRED)
target_link_libraries(GtestAPI PRIVATE Threads::Threads)
target_compile_options(GtestAPI PRIVATE -O3)
endif()
endif()
# 链接共享库文件
target_link_libraries(GtestAPI PRIVATE gmock gtest)
6. GtestAPI.cpp
编写测试用例:
代码如下(示例):
#include <iostream>
#include "gtest/gtest.h"
TEST(ErrorCodeTest, errorcode) {
int a = 0;
EXPECT_EQ(a, 0);
}
int main(int argc, char** argv) {
testing::InitGoogleTest();
return RUN_ALL_TESTS();
}
7. 开始构建
7.1 Linux构建运行
将你的 GtestAPI文件夹工程拷贝到Linux中,执行以下命令:
cd GtestAPI
mkdir build && cd build
cmake .. && make
执行如下命令运行:
./bin/GtestAPI
7.2 windows构建运行
使用CMake工具进行构建,填写好源码路径和构建路径。
点击Configure,弹窗内容设置参考如下:
点击Generate和 Open Project
运行结果如下:
文章来源:https://www.toymoban.com/news/detail-470938.html
8. 总结
如果不知道如何构建对应的项目,参考第一步,历史博客。文章来源地址https://www.toymoban.com/news/detail-470938.html
到了这里,关于【GTest】使用CMakeLitsts.txt构建Windows和Linux的跨平台GoogleTest项目(非常详细+亲测有效)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!