InstallRequiredSystemLibraries debug-only (#11141)

Add support to InstallRequiredSystemLibraries to only install
debug libraries when both debug and release versions are available.

This is as if you are building a debug package then only the debug
versions are needed but not the release.
This commit is contained in:
Mike McQuaid 2011-01-06 11:30:33 +00:00 committed by David Cole
parent 492cd84fc5
commit 753b429ec4
1 changed files with 72 additions and 51 deletions

View File

@ -1,18 +1,21 @@
# By including this file, all files in the CMAKE_INSTALL_DEBUG_LIBRARIES, # By including this file, all library files listed in the variable
# will be installed with INSTALL(PROGRAMS ...) into bin for WIN32 and lib # CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS will be installed with
# for non-win32. If CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP is set to TRUE # INSTALL(PROGRAMS ...) into bin for WIN32 and lib
# for non-WIN32. If CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP is set to TRUE
# before including this file, then the INSTALL command is not called. # before including this file, then the INSTALL command is not called.
# The user can use the variable CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS to use a # The user can use the variable CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS to use a
# custom install command and install them into any directory they want. # custom install command and install them however they want.
# If it is the MSVC compiler, then the microsoft run # If it is the MSVC compiler, then the microsoft run
# time libraries will be found and automatically added to the # time libraries will be found and automatically added to the
# CMAKE_INSTALL_DEBUG_LIBRARIES, and installed. # CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS, and installed.
# If CMAKE_INSTALL_DEBUG_LIBRARIES is set and it is the MSVC # If CMAKE_INSTALL_DEBUG_LIBRARIES is set and it is the MSVC
# compiler, then the debug libraries are installed when available. # compiler, then the debug libraries are installed when available.
# If CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY is set then only the debug
# libraries are installed when both debug and release are available.
# If CMAKE_INSTALL_MFC_LIBRARIES is set then the MFC run time # If CMAKE_INSTALL_MFC_LIBRARIES is set then the MFC run time
# libraries are installed as well as the CRT run time libraries. # libraries are installed as well as the CRT run time libraries.
# If CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION is set then the libraries are # If CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION is set then the libraries are
# instaled to that directory rather than the default. # installed to that directory rather than the default.
#============================================================================= #=============================================================================
# Copyright 2006-2009 Kitware, Inc. # Copyright 2006-2009 Kitware, Inc.
@ -65,12 +68,14 @@ IF(MSVC)
# Install the manifest that allows DLLs to be loaded from the # Install the manifest that allows DLLs to be loaded from the
# directory containing the executable. # directory containing the executable.
SET(__install__libs IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
"${MSVC80_CRT_DIR}/Microsoft.VC80.CRT.manifest" SET(__install__libs
"${MSVC80_CRT_DIR}/msvcm80.dll" "${MSVC80_CRT_DIR}/Microsoft.VC80.CRT.manifest"
"${MSVC80_CRT_DIR}/msvcp80.dll" "${MSVC80_CRT_DIR}/msvcm80.dll"
"${MSVC80_CRT_DIR}/msvcr80.dll" "${MSVC80_CRT_DIR}/msvcp80.dll"
) "${MSVC80_CRT_DIR}/msvcr80.dll"
)
ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
IF(CMAKE_INSTALL_DEBUG_LIBRARIES) IF(CMAKE_INSTALL_DEBUG_LIBRARIES)
SET(MSVC80_CRT_DIR SET(MSVC80_CRT_DIR
@ -98,12 +103,15 @@ IF(MSVC)
# Install the manifest that allows DLLs to be loaded from the # Install the manifest that allows DLLs to be loaded from the
# directory containing the executable. # directory containing the executable.
SET(__install__libs IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
"${MSVC90_CRT_DIR}/Microsoft.VC90.CRT.manifest" SET(__install__libs
"${MSVC90_CRT_DIR}/msvcm90.dll" "${MSVC90_CRT_DIR}/Microsoft.VC90.CRT.manifest"
"${MSVC90_CRT_DIR}/msvcp90.dll" "${MSVC90_CRT_DIR}/msvcm90.dll"
"${MSVC90_CRT_DIR}/msvcr90.dll" "${MSVC90_CRT_DIR}/msvcp90.dll"
) "${MSVC90_CRT_DIR}/msvcr90.dll"
)
ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
IF(CMAKE_INSTALL_DEBUG_LIBRARIES) IF(CMAKE_INSTALL_DEBUG_LIBRARIES)
SET(MSVC90_CRT_DIR SET(MSVC90_CRT_DIR
"${MSVC90_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC90.DebugCRT") "${MSVC90_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC90.DebugCRT")
@ -113,8 +121,8 @@ IF(MSVC)
"${MSVC90_CRT_DIR}/msvcp90d.dll" "${MSVC90_CRT_DIR}/msvcp90d.dll"
"${MSVC90_CRT_DIR}/msvcr90d.dll" "${MSVC90_CRT_DIR}/msvcr90d.dll"
) )
ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES) ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
ENDIF(MSVC90) ENDIF(MSVC90)
IF(MSVC10) IF(MSVC10)
# Find the runtime library redistribution directory. # Find the runtime library redistribution directory.
@ -128,11 +136,14 @@ IF(MSVC)
# Install the manifest that allows DLLs to be loaded from the # Install the manifest that allows DLLs to be loaded from the
# directory containing the executable. # directory containing the executable.
SET(__install__libs IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
"${MSVC10_CRT_DIR}/Microsoft.VC100.CRT.manifest" SET(__install__libs
"${MSVC10_CRT_DIR}/msvcp100.dll" "${MSVC10_CRT_DIR}/Microsoft.VC100.CRT.manifest"
"${MSVC10_CRT_DIR}/msvcr100.dll" "${MSVC10_CRT_DIR}/msvcp100.dll"
) "${MSVC10_CRT_DIR}/msvcr100.dll"
)
ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
IF(CMAKE_INSTALL_DEBUG_LIBRARIES) IF(CMAKE_INSTALL_DEBUG_LIBRARIES)
SET(MSVC10_CRT_DIR SET(MSVC10_CRT_DIR
"${MSVC10_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC90.DebugCRT") "${MSVC10_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC90.DebugCRT")
@ -141,7 +152,7 @@ IF(MSVC)
"${MSVC10_CRT_DIR}/msvcp100d.dll" "${MSVC10_CRT_DIR}/msvcp100d.dll"
"${MSVC10_CRT_DIR}/msvcr100d.dll" "${MSVC10_CRT_DIR}/msvcr100d.dll"
) )
ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES) ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
ENDIF(MSVC10) ENDIF(MSVC10)
IF(CMAKE_INSTALL_MFC_LIBRARIES) IF(CMAKE_INSTALL_MFC_LIBRARIES)
@ -167,17 +178,20 @@ IF(MSVC)
"${MSVC80_MFC_DIR}/mfcm80ud.dll" "${MSVC80_MFC_DIR}/mfcm80ud.dll"
) )
ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES) ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
SET(MSVC80_MFC_DIR "${MSVC80_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.MFC") SET(MSVC80_MFC_DIR "${MSVC80_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.MFC")
# Install the manifest that allows DLLs to be loaded from the # Install the manifest that allows DLLs to be loaded from the
# directory containing the executable. # directory containing the executable.
SET(__install__libs ${__install__libs} IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
"${MSVC80_MFC_DIR}/Microsoft.VC80.MFC.manifest" SET(__install__libs ${__install__libs}
"${MSVC80_MFC_DIR}/mfc80.dll" "${MSVC80_MFC_DIR}/Microsoft.VC80.MFC.manifest"
"${MSVC80_MFC_DIR}/mfc80u.dll" "${MSVC80_MFC_DIR}/mfc80.dll"
"${MSVC80_MFC_DIR}/mfcm80.dll" "${MSVC80_MFC_DIR}/mfc80u.dll"
"${MSVC80_MFC_DIR}/mfcm80u.dll" "${MSVC80_MFC_DIR}/mfcm80.dll"
) "${MSVC80_MFC_DIR}/mfcm80u.dll"
)
ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
# include the language dll's for vs8 as well as the actuall dll's # include the language dll's for vs8 as well as the actuall dll's
SET(MSVC80_MFCLOC_DIR "${MSVC80_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.MFCLOC") SET(MSVC80_MFCLOC_DIR "${MSVC80_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.MFCLOC")
# Install the manifest that allows DLLs to be loaded from the # Install the manifest that allows DLLs to be loaded from the
@ -208,17 +222,20 @@ IF(MSVC)
"${MSVC90_MFC_DIR}/mfcm90ud.dll" "${MSVC90_MFC_DIR}/mfcm90ud.dll"
) )
ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES) ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
SET(MSVC90_MFC_DIR "${MSVC90_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.MFC") SET(MSVC90_MFC_DIR "${MSVC90_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.MFC")
# Install the manifest that allows DLLs to be loaded from the # Install the manifest that allows DLLs to be loaded from the
# directory containing the executable. # directory containing the executable.
SET(__install__libs ${__install__libs} IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
"${MSVC90_MFC_DIR}/Microsoft.VC90.MFC.manifest" SET(__install__libs ${__install__libs}
"${MSVC90_MFC_DIR}/mfc90.dll" "${MSVC90_MFC_DIR}/Microsoft.VC90.MFC.manifest"
"${MSVC90_MFC_DIR}/mfc90u.dll" "${MSVC90_MFC_DIR}/mfc90.dll"
"${MSVC90_MFC_DIR}/mfcm90.dll" "${MSVC90_MFC_DIR}/mfc90u.dll"
"${MSVC90_MFC_DIR}/mfcm90u.dll" "${MSVC90_MFC_DIR}/mfcm90.dll"
) "${MSVC90_MFC_DIR}/mfcm90u.dll"
)
ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
# include the language dll's for vs9 as well as the actuall dll's # include the language dll's for vs9 as well as the actuall dll's
SET(MSVC90_MFCLOC_DIR "${MSVC90_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.MFCLOC") SET(MSVC90_MFCLOC_DIR "${MSVC90_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.MFCLOC")
# Install the manifest that allows DLLs to be loaded from the # Install the manifest that allows DLLs to be loaded from the
@ -249,17 +266,20 @@ IF(MSVC)
"${MSVC10_MFC_DIR}/mfcm100ud.dll" "${MSVC10_MFC_DIR}/mfcm100ud.dll"
) )
ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES) ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
SET(MSVC10_MFC_DIR "${MSVC10_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC100.MFC") SET(MSVC10_MFC_DIR "${MSVC10_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC100.MFC")
# Install the manifest that allows DLLs to be loaded from the # Install the manifest that allows DLLs to be loaded from the
# directory containing the executable. # directory containing the executable.
SET(__install__libs ${__install__libs} IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
"${MSVC10_MFC_DIR}/Microsoft.VC100.MFC.manifest" SET(__install__libs ${__install__libs}
"${MSVC10_MFC_DIR}/mfc100.dll" "${MSVC10_MFC_DIR}/Microsoft.VC100.MFC.manifest"
"${MSVC10_MFC_DIR}/mfc100u.dll" "${MSVC10_MFC_DIR}/mfc100.dll"
"${MSVC10_MFC_DIR}/mfcm100.dll" "${MSVC10_MFC_DIR}/mfc100u.dll"
"${MSVC10_MFC_DIR}/mfcm100u.dll" "${MSVC10_MFC_DIR}/mfcm100.dll"
) "${MSVC10_MFC_DIR}/mfcm100u.dll"
)
ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
# include the language dll's for vs10 as well as the actuall dll's # include the language dll's for vs10 as well as the actuall dll's
SET(MSVC10_MFCLOC_DIR "${MSVC10_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC100.MFCLOC") SET(MSVC10_MFCLOC_DIR "${MSVC10_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC100.MFCLOC")
# Install the manifest that allows DLLs to be loaded from the # Install the manifest that allows DLLs to be loaded from the
@ -301,6 +321,7 @@ IF(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION lib) SET(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION lib)
ENDIF(WIN32) ENDIF(WIN32)
ENDIF(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION) ENDIF(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION)
INSTALL(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION ${CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION}) INSTALL(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
DESTINATION ${CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION})
ENDIF(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP) ENDIF(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP)
ENDIF(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS) ENDIF(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)