草庐IT

cmake应用:集成gtest进行单元测试

编写代码有bug是很正常的,通过编写完备的单元测试,可以及时发现问题,并且在后续的代码改进中持续观测是否引入了新的bug。对于追求质量的程序员,为自己的代码编写全面的单元测试是必备的基础技能,在编写单元测试的时候也能复盘自己的代码设计,是提高代码质量极为有效的手段。  在本系列前序的文章中已经介绍了CMake很多内容,本文是针对单元测试的外延。本系列更多精彩文章敬请关注公众号【很酷的程序员】的话题:CMake。  本文主要介绍以下几个方面的内容:  1、何为单元测试  2、何为gtest  3、怎么使用gtest  4、怎么运行测试一单元测试是什么?  单元测试(UnitTesting),一般

使用CMake启用RUNPATH特性

使用CMake,启用RUNPATH特性,可以参考官方帖子。如下源码来自于上述帖子。CMAKE_MINIMUM_REQUIRED(VERSION2.8FATAL_ERROR)PROJECT(RUNPATHC)SET(CMAKE_VERBOSE_MAKEFILEON)SET(CMAKE_INSTALL_RPATH$ENV{HOME}/lib)FILE(WRITE${CMAKE_BINARY_DIR}/main.c"intmain(void){return0;}\n")ADD_EXECUTABLE(mainmain.c)INSTALL(TARGETSmainRUNTIMEDESTINATIONbin

使用CMake启用RUNPATH特性

使用CMake,启用RUNPATH特性,可以参考官方帖子。如下源码来自于上述帖子。CMAKE_MINIMUM_REQUIRED(VERSION2.8FATAL_ERROR)PROJECT(RUNPATHC)SET(CMAKE_VERBOSE_MAKEFILEON)SET(CMAKE_INSTALL_RPATH$ENV{HOME}/lib)FILE(WRITE${CMAKE_BINARY_DIR}/main.c"intmain(void){return0;}\n")ADD_EXECUTABLE(mainmain.c)INSTALL(TARGETSmainRUNTIMEDESTINATIONbin

android - 在 Android 上使用 Address Sanitizer 构建,但使用 CMake

我正在尝试为android构建一个.so,我想使用地址清理器进行构建,但我看到的唯一说明是针对基于AndroidNDK的Makefile,但我使用的是较新的认可CMake设置。仅添加标志-fsanitize=address是不够的,因为缺少clang运行时库。在我的CMakeListsforAndroid构建库中添加什么是正确的? 最佳答案 您还需要按照documentation中的说明准备您的设备.您必须从NDK运行asan_device_setup脚本。它会将asan.so放在设备上。

android - 如何强制 CMake 在 Android NDK 项目中使用响应文件?

我有一个包含NDK组件的Android项目,配置为使用CMake构建。根据项目目录在驱动器上的位置,我可能会收到“命令行太长”的提示。CMake尝试构建此项目时出错。这是因为CMake汇编了巨大的命令行,列出了项目中的所有.cpp文件。我读到CMake有一种称为“响应文件”的机制来解决这个问题,但我找不到在NDK项目中启用它们的方法。有什么建议吗? 最佳答案 你canspecifyresponsefile在CMakeLists.txt或build.gradle中,添加android{defaultConfig{...external

【VSCode】Windows环境下,VSCode 搭建 cmake 编译环境(通过配置文件配置)

除了之前的使用VSCode插件来编译工程外,我们也可以使用配置文件来编译cmake工程,主要依赖launch.json和tasks.json文件。目录一、下载编译器1、下载WindowsGCC2、选择编译器路径二、配置debug环境1、配置lauch.json文件2、配置tasks.json文件三、编译工程1、测试工程结构2、开始编译 一、下载编译器1、下载WindowsGCC这里是在Windows环境下,所以下载的是Windows环境使用的gcc编译器。下载地址: MinGW-w64-for32and64bitWindows-BrowseFilesatSourceForge.net下载完毕后

android - 发生 CMake 与服务器通信错误

我正在构建一个需要一些NDK代码的项目,但最近几天这个问题让我抓狂。这只是一个使用NDK的空项目,它是按照AS指南创建的,没有任何改变。环境:AndroidStudio3.2.1构建#AI-181.5540.7.32.5056338,构建于2018年10月9日JRE:1.8.0_152-release-1136-b06amd64JVM:JetBrainss.r.o的OpenJDK64位服务器VMWindows1010.0CMake版本3.10.2.4988404(由SDK管理器下载)提示如下:SupportforCMake3.7andhigherisapreviewfeature.To

android - Opencv 4.1.1 Android 链接错误

我有一个用C++和OpenCV编写的应用程序,用于AndroidSDK。目前我们使用的是OpenCV3.2.0,但我们需要迁移到OpenCV4.1.1。我正在尝试为不同的架构使用更少的模块来构建它。我正在使用Opencv4.1.1;NDK16b;cmake3.13.2这是命令行cmake\-DANDROID_ABI:STRING=$currentArch\-DANDROID_TOOLCHAIN_NAME:STRING=$currentArchVersion\-DANDROID_NDK:PATH="/Users/analivia/Library/Android/sdk/ndk-bundl

cmake,exe找不到dll

因此,我试图使用CMAKE在Windows上设置一个项目这就是我的项目结构的样子:GameEngine.git建造包括资源测试cmakelists.txt这个想法是,“源”目录包含GameEngine库的所有.cpp文件,“Include”目录包含所有标头文件,并且“测试”目录用于测试库。因此,它应该取决于gameengine.dll和gameengine.lib(在Windows上)。我的顶层cmakeslists.txt包含:cmake_minimum_required(VERSION2.7)PROJECT(GameEngine)include_directories(${CMAKE_CU

android - LOCAL_WHOLE_STATIC_LIBRARIES 的 cmake 插件语法

我需要将android.mk移植到cmake脚本中。我在cmake脚本中找不到相应的“LOCAL_WHOLE_STATIC_LIBRARIES”。如何在cmake中设置“LOCAL_WHOLE_STATIC_LIBRARIES”? 最佳答案 这对我有用target_link_libraries(${APP_NAME}-Wl,--whole-archivelibname-Wl,--no-whole-archive) 关于android-LOCAL_WHOLE_STATIC_LIBRARIE