博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(4)CMake入门笔记--CMake官网教程
阅读量:2172 次
发布时间:2019-05-01

本文共 801 字,大约阅读时间需要 2 分钟。

四.添加系统内省

接下来让我们考虑在项目中添加一些代码,这些代码取决于目标平台可能没有的功能。例如是否具有log和exp函数。 当然,几乎每个平台都有这些功能,但本教程假设它们不太常见。 如果平台有日志,那么我们将使用它来计算mysqrt函数中的平方根。 我们首先使用顶级CMakeLists.txt文件中的CheckFunctionExists.cmake宏测试这些函数的可用性,如下所示:

# 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以定义这些值,如果CMake在平台上找到它们,如下所示:

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

在TutorialConfig.h的configure_file命令之前完成log和exp的测试非常重要。 configure_file命令使用CMake中的当前设置立即配置文件。 最后在mysqrt函数中,如果使用以下代码在系统上可用,我们可以提供基于log和exp的备用实现:

// if we have both log and exp then use them#if defined (HAVE_LOG) && defined (HAVE_EXP)  result = exp(log(x)*0.5);#else // otherwise use an iterative approach

 

转载地址:http://lmhzb.baihongyu.com/

你可能感兴趣的文章
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机11:Java内存异常原理与实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>
深入理解JVM虚拟机13:再谈四种引用及GC实践
查看>>
Spring源码剖析1:Spring概述
查看>>
Spring源码剖析2:初探Spring IOC核心流程
查看>>
Spring源码剖析3:Spring IOC容器的加载过程
查看>>
Spring源码剖析4:懒加载的单例Bean获取过程分析
查看>>
Spring源码剖析5:JDK和cglib动态代理原理详解
查看>>
Spring源码剖析6:Spring AOP概述
查看>>
Spring源码剖析7:AOP实现原理详解
查看>>
Spring源码剖析8:Spring事务概述
查看>>
Spring源码剖析9:Spring事务源码剖析
查看>>
重新学习Mysql数据库1:无废话MySQL入门
查看>>
探索Redis设计与实现2:Redis内部数据结构详解——dict
查看>>
探索Redis设计与实现3:Redis内部数据结构详解——sds
查看>>