Files
CMake/Help/variable/CMAKE_DL_LIBS.rst
T
Peter Kokot 0622cb343e AIX: Drop unnecessary -l from CMAKE_DL_LIBS
The `-lld` linker flag was added from the previous command-line script
that have all values in `CMAKE_DL_LIBS` prepended with `-l`.

On AIX, the `dlopen()` is otherwise in C library (default). But it seems
that also `libld` library was once needed on some versions to have
dynamic loading working.

Sync `CMAKE_DL_LIBS` value style with all other current usages.
2025-07-21 11:34:03 -04:00

50 lines
1.2 KiB
ReStructuredText

CMAKE_DL_LIBS
-------------
This variable contains a name of the dynamic loading library, or a list of
system libraries needed to use the ``dlopen()`` and ``dlclose()`` functions.
Few examples of the values this variable is set to:
``dl``
On most Unix-like systems.
``-lld``
On AIX, prior to CMake 4.2.
``dld``
On HP-UX.
""
Empty string value or not set on systems that have ``dl*()`` functions
either in the default library that is implicitly linked (e.g., BSD-like
systems, Haiku, macOS, SunOS, 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:
.. code-block:: cmake
target_link_libraries(example PRIVATE ${CMAKE_DL_LIBS})
Example: Checking Symbols
"""""""""""""""""""""""""
Checking for symbols with the dynamic loading library linked during the check:
.. code-block:: cmake
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()