IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> cmake使用教程(三,安卓系列学习进阶视频 -> 正文阅读

[开发测试]cmake使用教程(三,安卓系列学习进阶视频

注意上边install的第一个参数和第三个参数。

TARGETS包含六种形式:ARCHIVE, LIBRARY, RUNTIME, OBJECTS, FRAMEWORK, BUNDLE。注意Mathfunction安装的是LIBRARY,而根目录下的可执行文件是RUNTIME类型。

FILE 将给定的文件复制到指定目录。如果没有给定权限参数,则由该表单安装的文件默认为OWNER_WRITEOWNER_READGROUP_READWORLD_READ

TARGETS和FILE可指定为相对目录和绝对目录。

DESTINATION在这里是一个相对路径,取默认值。在unix系统中指向 /usr/local 在windows上c:/Program Files/${PROJECT_NAME}

也可以通过设置CMAKE_INSTALL_PREFIX这个变量来设置安装的路径,那么安装位置不指向/usr/local,而指向你所指定的目录。

cmake .
make
makeinstall 

执行完毕后即安装了软件。

示例中指向的安装地址如下表所示:

文件/库安装位置
MathFunctions/usr/local/bin/
MathFunctions.h/usr/local/include/
Tutorial/usr/local/bin/
TutorialConfig.h/usr/local/include

添加测试

添加测试也非常简单,在根目录下的CMakeLists.txt文件最后添加如下代码来测试输入参数后产生的结果是否正确。

include(CTest)

# does the application run
add_test (TutorialRuns Tutorial 25)
# does it sqrt of 25
add_test (TutorialComp25 Tutorial 25)
set_tests_properties (TutorialComp25 PROPERTIES PASS_REGULAR_EXPRESSION "25 is 5")
# does it handle negative numbers
add_test (TutorialNegative Tutorial -25)
set_tests_properties (TutorialNegative PROPERTIES PASS_REGULAR_EXPRESSION "-25 is 0")
# does it handle small numbers
add_test (TutorialSmall Tutorial 0.0001)
set_tests_properties (TutorialSmall PROPERTIES PASS_REGULAR_EXPRESSION "0.0001 is 0.01")
# does the usage message work?
add_test (TutorialUsage Tutorial)
set_tests_properties (TutorialUsage PROPERTIES PASS_REGULAR_EXPRESSION "Usage:.*number") 

构建项目完成后,可以运行ctest命令行工具来运行测试。第一个测试只是验证应用程序是否正常运行,没有发生崩溃,并且返回值是0。这是CTest测试的基本形式。接下来的几个测试都使用PASS_REGULAR_EXPRESSION测试属性来验证测试的输出是否包含特定的字符串。

如果您想要添加许多测试来测试不同的输入值,您可以考虑创建如下的宏(相当于函数):

#define a macro to simplify adding tests, then use it
macro (do_test arg result)
  add_test (TutorialComp${arg} Tutorial ${arg})
  set_tests_properties (TutorialComp${arg}
    PROPERTIES PASS_REGULAR_EXPRESSION ${result})
endmacro (do_test)
 
# do a bunch of result based tests
do_test (25 "25 is 5")
do_test (-25 "-25 is 0") 

构建项目后执行ctest可得到如下结果:

? ~/Desktop/Tutorial/Step3/build/ ctest
Test project /Users/saka/Desktop/Tutorial/Step3/build
    Start 1: TutorialRuns
1/5 Test #1: TutorialRuns .....................   Passed    0.00 sec
    Start 2: TutorialComp25
2/5 Test #2: TutorialComp25 ...................   Passed    0.01 sec
    Start 3: TutorialNegative
3/5 Test #3: TutorialNegative .................   Passed    0.00 sec
    Start 4: TutorialSmall
4/5 Test #4: TutorialSmall ....................   Passed    0.00 sec
    Start 5: TutorialUsage
5/5 Test #5: TutorialUsage ....................   Passed    0.00 sec

100% tests passed, 0 tests failed out of 5

Total Test time (real) =   0.03 sec 

可以看到,测试全部通过。

添加系统自检

有时候我们可能会为多种平台开发程序,而有的平台包含某个库,有的平台不包含这个库,那么我们就可以通过系统自检来判断是使用平台系统提供的库还是自己编写的库。

下边我们将添加一些依赖于目标平台是否具有log和exp函数的代码。当然,几乎每个平台都有这些功能,但本教程假设它们不太常见。如果平台有log库,那么我们将使用它来计算平方根,而不适用mysqrt中的函数。

首先使用CheckFunctionExists.cmake宏来测试这些函数的是否存在。在顶级CMakeLists.txt文件中编写代码如下:

# does this system provide the log and exp functions?
include (CheckFunctionExists)
check_function_exists (log HAVE_LOG)
check_function_exists (exp HAVE_EXP) 

然后在TutorialConfig.h.in中添加使用上边定义的变量的代码:

// does the platform provide exp and log functions?
#cmakedefine HAVE_LOG
#cmakedefine HAVE_EXP 

有一点需要注意:log和exp的测试代码一定要在TutorialConfig.hconfigure_file命令之前。configure.file命令会立即使用CMake中的当前设置配置文件。最后,在mysqrt函数中,我们可以提供一个基于log和exp的替代实现,如果它们在系统上可用以下代码可用:

// if we have both log and exp then use them
### 最后

针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

* **Android前沿技术大纲**

  ![](https://img-blog.csdnimg.cn/img_convert/1d5d84dff67e4ef53c76207bde391aab.png)

* **全套体系化高级架构视频**

  ![](https://img-blog.csdnimg.cn/img_convert/3cdba8a0340945ce9eb32ef5426c09d3.png)

##### **[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://codechina.csdn.net/m0_60958482/android_p7)**

> **Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。**

0_60958482/android_p7)**

> **Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。**

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 12:13:08  更:2021-09-03 12:13:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/12 3:06:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码