CMAKE_DL_LIBS

This variable contains a name of the dynamic loading library, or a list of system libraries needed to use the platform's dynamic loading functions. On most Unix-like systems, these are the functions declared in the <dlfcn.h> header, such as dlopen(), dlsym(), dlerror(), and dlclose().

Few examples of the values this variable is set to:

dl

On most Unix-like systems.

ld

On AIX. Prior to CMake 4.2, the value was -lld.

dld

On HP-UX.

""

Empty string value or not set on systems that provide these functions in the default library that is implicitly linked (e.g., BSD-like systems, Haiku, macOS, etc.), or on systems that don't provide these functions (e.g., Windows).

Examples

Example: Linking Dynamic Loading Library

Using this variable in a project that uses dynamic loading functionality:

target_link_libraries(example PRIVATE ${CMAKE_DL_LIBS})

Example: Checking Symbols

Checking for symbols with the dynamic loading library linked during the check:

include(CheckSymbolExists)
include(CMakePushCheckState)

cmake_push_check_state(RESET)
  set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS})
  check_symbol_exists(dlopen "dlfcn.h" HAVE_DLOPEN)
cmake_pop_check_state()