CheckFunctionExists¶
检查一次 C 函数是否可以从系统库中链接。
- check_function_exists¶
check_function_exists(<function> <variable>)
检查
<function>
是否由系统中的库提供,并将结果存储在内部缓存变量<variable>
中。
在调用此宏之前,可以设置以下变量来修改检查运行方式
CMAKE_REQUIRED_FLAGS
要传递给编译器的其他标志的字符串。字符串必须以空格分隔——;-list 将不起作用。
CMAKE_<LANG>_FLAGS
及其关联的配置特定变量的内容在CMAKE_REQUIRED_FLAGS
的内容之前自动添加到编译器命令中。
CMAKE_REQUIRED_DEFINITIONS
A ;-list of compiler definitions of the form
-DFOO
or-DFOO=bar
. A definition for the name specified by<resultVar>
will also be added automatically.
CMAKE_REQUIRED_INCLUDES
A ;-list of header search paths to pass to the compiler. These will be the only header search paths used--the contents of the
INCLUDE_DIRECTORIES
directory property will be ignored.
CMAKE_REQUIRED_LINK_OPTIONS
在版本 3.14 中添加。
A ;-list of options to add to the link command (see
try_compile()
for further details).
CMAKE_REQUIRED_LIBRARIES
A ;-list of libraries to add to the link command. These can be the name of system libraries or they can be Imported Targets (see
try_compile()
for further details).
CMAKE_REQUIRED_LINK_DIRECTORIES
在版本 3.31 中添加。
传递给链接器搜索路径库的;-list(进一步的详情,请见
try_compile()
)。
CMAKE_REQUIRED_QUIET
3.1 版本新增。
如果该变量评估为布尔真值,与该检查相关的状态消息将被隐藏。
注意
出于以下原因,优先使用CheckSymbolExists
或CheckSourceCompiles
,而不是该模块
check_function_exists()
无法检测内嵌在头文件或指定为宏的函数。check_function_exists()
无法检测 Win32 API 中 32 位版本中的任何东西,因为调用约定不匹配。check_function_exists()
仅验证链接,而不验证函数在系统头文件中声明。