BUILD_SHARED_LIBS ----------------- Tell :command:`add_library` to default to ``SHARED`` libraries, instead of ``STATIC`` libraries, when called with no explicit library type. Calls to :command:`add_library` without any explicit library type check the current ``BUILD_SHARED_LIBS`` variable value. If it is true, then the default library type is ``SHARED``. Otherwise, the default is ``STATIC``. For example, the code: .. code-block:: cmake add_library(example ${sources}) behaves as if written .. code-block:: cmake if(BUILD_SHARED_LIBS) add_library(example SHARED ${sources}) else() add_library(example STATIC ${sources}) endif() CMake does not define ``BUILD_SHARED_LIBS`` by default, but projects often create a cache entry for it using the :command:`option` command: .. code-block:: cmake option(BUILD_SHARED_LIBS "Build using shared libraries" ON) This provides a switch that users can control, e.g., with :option:`cmake -D`. If adding such an option to the project, do so in the top level ``CMakeLists.txt`` file, before any :command:`add_library` calls. Note that if bringing external dependencies directly into the build, such as with :module:`FetchContent` or a direct call to :command:`add_subdirectory`, and one of those dependencies has such a call to :command:`option(BUILD_SHARED_LIBS ...)