CMake 简明教程(4)---添加系统检测

原文网址:http://cmake.org/cmake/help/cmake_tutorial.html

教程中所有的代码都可以在这里找到:http://public.kitware.com/cgi-bin/viewcvs.cgi/CMake/Tests/Tutorial/




这一节,让我们考虑这种情况,我们的工程使用了一些目标平台不支持的代码。下面的例子中我们会添加一些代码,这些代码与目标平台是否有log和exp函数有关。当然,几乎每个平台都包含这些函数,但在这个例子中,我们假设它不存在。如果某个平台中有log函数,我们会直接使用平台函数。我们首先在CMakeLists.txt开头使用CheckFunctionExits.cmake宏测试这些函数是否可用,代码如下:

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

接下来,如果平台上存在这些bovi,我们会如下修改TutorialConfig.h.in来定义这些变量:

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

切记在对TutorialConfig.h文件使用cofigure_file函数之前检测log和exp非常必要。configure_file函数按cmake当前配置会间接配置了文件。最后,在mysqrt 函数中,如果在当前系统上log和exp可用,我们提供一个基于log和exp可选的实现。



你可能感兴趣的:(教程,cmake)