瀏覽代碼

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.
Mike McQuaid 15 年之前
父節點
當前提交
753b429ec4
共有 1 個文件被更改,包括 72 次插入51 次删除
  1. 72 51
      Modules/InstallRequiredSystemLibraries.cmake

+ 72 - 51
Modules/InstallRequiredSystemLibraries.cmake

@@ -1,18 +1,21 @@
-# By including this file, all files in the CMAKE_INSTALL_DEBUG_LIBRARIES,
-# will be installed with INSTALL(PROGRAMS ...) into bin for WIN32 and lib
-# for non-win32. If CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP is set to TRUE
+# By including this file, all library files listed in the variable
+# CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS will be installed with
+# 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.
 # 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
 # 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
 # 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
 # libraries are installed as well as the CRT run time libraries.
 # 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.
@@ -65,12 +68,14 @@ IF(MSVC)
 
     # Install the manifest that allows DLLs to be loaded from the
     # directory containing the executable.
-    SET(__install__libs
-      "${MSVC80_CRT_DIR}/Microsoft.VC80.CRT.manifest"
-      "${MSVC80_CRT_DIR}/msvcm80.dll"
-      "${MSVC80_CRT_DIR}/msvcp80.dll"
-      "${MSVC80_CRT_DIR}/msvcr80.dll"
-      )
+    IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+      SET(__install__libs
+        "${MSVC80_CRT_DIR}/Microsoft.VC80.CRT.manifest"
+        "${MSVC80_CRT_DIR}/msvcm80.dll"
+        "${MSVC80_CRT_DIR}/msvcp80.dll"
+        "${MSVC80_CRT_DIR}/msvcr80.dll"
+        )
+    ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
 
     IF(CMAKE_INSTALL_DEBUG_LIBRARIES)
       SET(MSVC80_CRT_DIR
@@ -98,12 +103,15 @@ IF(MSVC)
 
     # Install the manifest that allows DLLs to be loaded from the
     # directory containing the executable.
-    SET(__install__libs
-      "${MSVC90_CRT_DIR}/Microsoft.VC90.CRT.manifest"
-      "${MSVC90_CRT_DIR}/msvcm90.dll"
-      "${MSVC90_CRT_DIR}/msvcp90.dll"
-      "${MSVC90_CRT_DIR}/msvcr90.dll"
-      ) 
+    IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+      SET(__install__libs
+        "${MSVC90_CRT_DIR}/Microsoft.VC90.CRT.manifest"
+        "${MSVC90_CRT_DIR}/msvcm90.dll"
+        "${MSVC90_CRT_DIR}/msvcp90.dll"
+        "${MSVC90_CRT_DIR}/msvcr90.dll"
+        )
+    ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+
     IF(CMAKE_INSTALL_DEBUG_LIBRARIES)
       SET(MSVC90_CRT_DIR
         "${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}/msvcr90d.dll"
         )
-    ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES) 
-  ENDIF(MSVC90) 
+    ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
+  ENDIF(MSVC90)
 
   IF(MSVC10)
     # Find the runtime library redistribution directory.
@@ -128,11 +136,14 @@ IF(MSVC)
 
     # Install the manifest that allows DLLs to be loaded from the
     # directory containing the executable.
-    SET(__install__libs
-      "${MSVC10_CRT_DIR}/Microsoft.VC100.CRT.manifest"
-      "${MSVC10_CRT_DIR}/msvcp100.dll"
-      "${MSVC10_CRT_DIR}/msvcr100.dll"
-      ) 
+    IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+      SET(__install__libs
+        "${MSVC10_CRT_DIR}/Microsoft.VC100.CRT.manifest"
+        "${MSVC10_CRT_DIR}/msvcp100.dll"
+        "${MSVC10_CRT_DIR}/msvcr100.dll"
+        )
+    ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+
     IF(CMAKE_INSTALL_DEBUG_LIBRARIES)
       SET(MSVC10_CRT_DIR
         "${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}/msvcr100d.dll"
         )
-    ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES) 
+    ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
   ENDIF(MSVC10)
 
   IF(CMAKE_INSTALL_MFC_LIBRARIES)
@@ -167,17 +178,20 @@ IF(MSVC)
           "${MSVC80_MFC_DIR}/mfcm80ud.dll"
           )
       ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
-        
+
       SET(MSVC80_MFC_DIR "${MSVC80_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.MFC")
       # Install the manifest that allows DLLs to be loaded from the
       # directory containing the executable.
-      SET(__install__libs ${__install__libs}
-        "${MSVC80_MFC_DIR}/Microsoft.VC80.MFC.manifest"
-        "${MSVC80_MFC_DIR}/mfc80.dll"
-        "${MSVC80_MFC_DIR}/mfc80u.dll"
-        "${MSVC80_MFC_DIR}/mfcm80.dll"
-        "${MSVC80_MFC_DIR}/mfcm80u.dll"
-        )
+      IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+        SET(__install__libs ${__install__libs}
+          "${MSVC80_MFC_DIR}/Microsoft.VC80.MFC.manifest"
+          "${MSVC80_MFC_DIR}/mfc80.dll"
+          "${MSVC80_MFC_DIR}/mfc80u.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
       SET(MSVC80_MFCLOC_DIR "${MSVC80_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.MFCLOC")
       # Install the manifest that allows DLLs to be loaded from the
@@ -208,17 +222,20 @@ IF(MSVC)
           "${MSVC90_MFC_DIR}/mfcm90ud.dll"
           )
       ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
-        
+
       SET(MSVC90_MFC_DIR "${MSVC90_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.MFC")
       # Install the manifest that allows DLLs to be loaded from the
       # directory containing the executable.
-      SET(__install__libs ${__install__libs}
-        "${MSVC90_MFC_DIR}/Microsoft.VC90.MFC.manifest"
-        "${MSVC90_MFC_DIR}/mfc90.dll"
-        "${MSVC90_MFC_DIR}/mfc90u.dll"
-        "${MSVC90_MFC_DIR}/mfcm90.dll"
-        "${MSVC90_MFC_DIR}/mfcm90u.dll"
-        )
+      IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+        SET(__install__libs ${__install__libs}
+          "${MSVC90_MFC_DIR}/Microsoft.VC90.MFC.manifest"
+          "${MSVC90_MFC_DIR}/mfc90.dll"
+          "${MSVC90_MFC_DIR}/mfc90u.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
       SET(MSVC90_MFCLOC_DIR "${MSVC90_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.MFCLOC")
       # Install the manifest that allows DLLs to be loaded from the
@@ -249,17 +266,20 @@ IF(MSVC)
           "${MSVC10_MFC_DIR}/mfcm100ud.dll"
           )
       ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
-        
+
       SET(MSVC10_MFC_DIR "${MSVC10_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC100.MFC")
       # Install the manifest that allows DLLs to be loaded from the
       # directory containing the executable.
-      SET(__install__libs ${__install__libs}
-        "${MSVC10_MFC_DIR}/Microsoft.VC100.MFC.manifest"
-        "${MSVC10_MFC_DIR}/mfc100.dll"
-        "${MSVC10_MFC_DIR}/mfc100u.dll"
-        "${MSVC10_MFC_DIR}/mfcm100.dll"
-        "${MSVC10_MFC_DIR}/mfcm100u.dll"
-        )
+      IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+        SET(__install__libs ${__install__libs}
+          "${MSVC10_MFC_DIR}/Microsoft.VC100.MFC.manifest"
+          "${MSVC10_MFC_DIR}/mfc100.dll"
+          "${MSVC10_MFC_DIR}/mfc100u.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
       SET(MSVC10_MFCLOC_DIR "${MSVC10_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC100.MFCLOC")
       # 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)
       ENDIF(WIN32)
     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(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)