检查函数存在

检查是否可以链接 C 函数

check_function_exists
check_function_exists(<function> <variable>)

检查 <function> 是否由系统上的库提供,并将结果存储在 <variable> 中,它将被创建为内部缓存变量。

在调用此宏以修改检查运行方式之前,可以设置以下变量:

CMAKE_REQUIRED_FLAGS

编译命令行标志的字符串。

CMAKE_REQUIRED_DEFINITIONS

a ;-list 要定义的宏 (-DFOO=bar)。

CMAKE_REQUIRED_INCLUDES

a ;-list 要传递给编译器的标头搜索路径。

CMAKE_REQUIRED_LINK_OPTIONS

在 3.14 版本加入: a ;-list 添加到链接命令的选项。

CMAKE_REQUIRED_LIBRARIES

a ;-list 要添加到链接命令的库。请参阅政策:policy:CMP0075

CMAKE_REQUIRED_QUIET

在 3.1 版本加入: 在没有消息的情况下安静地执行。

备注

出于以下原因,更喜欢使用 CheckSymbolExists 而不是此模块:

  • check_function_exists() 无法检测到标头中内联或指定为宏的函数。

  • check_function_exists() 无法检测到 32 位版本的 Win32 API 中的任何内容,因为调用约定不匹配。

  • check_function_exists() 只验证链接,不验证函数是否在系统头文件中声明。