CheckLibraryExists¶
Check once if the function exists in system or specified library.
- check_library_exists¶
check_library_exists(<library> <function> <location> <variable>)
Check that the library
<library>
exists in the given location<location>
and has the specified<function>
. The result is stored in an internal cache variable<variable>
. If<location>
is empty string, default directories are searched.
Prefer using CheckSymbolExists
or CheckSourceCompiles
instead of this module for more robust detection if a function is available in
a library.
The following variables may be set before calling this macro to modify the way the check is run:
CMAKE_REQUIRED_FLAGS
String of additional flags to pass to the compiler. The string must be space-delimited--a ;-list will not work. The contents of
CMAKE_<LANG>_FLAGS
and its associated configuration-specific variable are automatically added to the compiler command before the contents ofCMAKE_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_LINK_OPTIONS
Added in version 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
Added in version 3.31.
A ;-list of libraries search paths to pass to the linker (see
try_compile()
for further details).
CMAKE_REQUIRED_QUIET
Added in version 3.1.
If this variable evaluates to a boolean true value, all status messages associated with the check will be suppressed.
Examples¶
This module can be useful for performing so-called sanity checks to verify that the specified library provides the expected functionality and is indeed the correct one being located.
For example, to check if the curl
library exists in the default paths and
has the curl_easy_perform
function:
include(CheckLibraryExists)
check_library_exists(curl curl_easy_perform "" HAVE_LIBRARY_CURL)
To check if library exists in specific non-standard location and has a specified function:
include(CheckLibraryExists)
check_library_exists(curl curl_easy_perform "/opt/curl/lib" HAVE_LIBRARY_CURL)
Also IMPORTED library (for example,
from the find_package()
call) can be used:
find_package(CURL)
# ...
if(TARGET CURL::libcurl)
include(CheckLibraryExists)
check_library_exists(CURL::libcurl curl_easy_perform "" HAVE_LIBRARY_CURL)
endif()