这一篇博客我们将在之前的项目中添加一些代码实现简单的自检功能。代码的描述是这样的,依据目标平台是否有log和exp函数(当然,几乎所有的平台都有这两个函数,当时我们假定我们的项目不一定有),如果有的话,在mysqrt函数中应这两个函数计算平方根。
首先,我们需要检测在项目中这两个函数是否可用,通过在顶层CMakeLists.txt文件中调用CheckFunctionExists模块来实现,在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)
check_function_exists (<function> <variable>):用于检测是否可以链接C函数,检测函数系统的库是否提供函数<function>,并且将结果存在变量<variable>中。检测的结果并不取决于是否有头文件声明了这个函数,只取决于在链接的时候能否找到它。
接着我们修改TutorialConfig.h.in来定义HAVE_LOG和HAVE_EXP的值(如果在平台时可以找到这些函数),TutorialConfig.h.in中添加的内容如下:
// does the pla