| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| # file Copyright.txt or https://cmake.org/licensing for details. | |
| #[=======================================================================[.rst: | |
| SelectLibraryConfigurations | |
| --------------------------- | |
| .. code-block:: cmake | |
| select_library_configurations(basename) | |
| This macro takes a library base name as an argument, and will choose | |
| good values for the variables | |
| :: | |
| basename_LIBRARY | |
| basename_LIBRARIES | |
| basename_LIBRARY_DEBUG | |
| basename_LIBRARY_RELEASE | |
| depending on what has been found and set. | |
| If only ``basename_LIBRARY_RELEASE`` is defined, ``basename_LIBRARY`` will | |
| be set to the release value, and ``basename_LIBRARY_DEBUG`` will be set | |
| to ``basename_LIBRARY_DEBUG-NOTFOUND``. If only ``basename_LIBRARY_DEBUG`` | |
| is defined, then ``basename_LIBRARY`` will take the debug value, and | |
| ``basename_LIBRARY_RELEASE`` will be set to ``basename_LIBRARY_RELEASE-NOTFOUND``. | |
| If the generator supports configuration types, then ``basename_LIBRARY`` | |
| and ``basename_LIBRARIES`` will be set with debug and optimized flags | |
| specifying the library to be used for the given configuration. If no | |
| build type has been set or the generator in use does not support | |
| configuration types, then ``basename_LIBRARY`` and ``basename_LIBRARIES`` | |
| will take only the release value, or the debug value if the release one | |
| is not set. | |
| #]=======================================================================] | |
| # This macro was adapted from the FindQt4 CMake module and is maintained by Will | |
| # Dicharry <[email protected]>. | |
| macro(select_library_configurations basename) | |
| if(NOT ${basename}_LIBRARY_RELEASE) | |
| set(${basename}_LIBRARY_RELEASE "${basename}_LIBRARY_RELEASE-NOTFOUND" CACHE FILEPATH "Path to a library.") | |
| endif() | |
| if(NOT ${basename}_LIBRARY_DEBUG) | |
| set(${basename}_LIBRARY_DEBUG "${basename}_LIBRARY_DEBUG-NOTFOUND" CACHE FILEPATH "Path to a library.") | |
| endif() | |
| get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) | |
| if( ${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE AND | |
| NOT ${basename}_LIBRARY_DEBUG STREQUAL ${basename}_LIBRARY_RELEASE AND | |
| ( _isMultiConfig OR CMAKE_BUILD_TYPE ) ) | |
| # if the generator is multi-config or if CMAKE_BUILD_TYPE is set for | |
| # single-config generators, set optimized and debug libraries | |
| set( ${basename}_LIBRARY "" ) | |
| foreach( _libname IN LISTS ${basename}_LIBRARY_RELEASE ) | |
| list( APPEND ${basename}_LIBRARY optimized "${_libname}" ) | |
| endforeach() | |
| foreach( _libname IN LISTS ${basename}_LIBRARY_DEBUG ) | |
| list( APPEND ${basename}_LIBRARY debug "${_libname}" ) | |
| endforeach() | |
| elseif( ${basename}_LIBRARY_RELEASE ) | |
| set( ${basename}_LIBRARY ${${basename}_LIBRARY_RELEASE} ) | |
| elseif( ${basename}_LIBRARY_DEBUG ) | |
| set( ${basename}_LIBRARY ${${basename}_LIBRARY_DEBUG} ) | |
| else() | |
| set( ${basename}_LIBRARY "${basename}_LIBRARY-NOTFOUND") | |
| endif() | |
| set( ${basename}_LIBRARIES "${${basename}_LIBRARY}" ) | |
| if( ${basename}_LIBRARY ) | |
| set( ${basename}_FOUND TRUE ) | |
| endif() | |
| mark_as_advanced( ${basename}_LIBRARY_RELEASE | |
| ${basename}_LIBRARY_DEBUG | |
| ) | |
| endmacro() |