[cmake-developers] [CMake 0016073]: InstallRequiredSystemLibraries needs updating for MSVS2015

Mantis Bug Tracker mantis at public.kitware.com
Thu Apr 21 03:38:50 EDT 2016


The following issue has been SUBMITTED. 
====================================================================== 
https://cmake.org/Bug/view.php?id=16073 
====================================================================== 
Reported By:                Lewoco
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   16073
Category:                   Modules
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     new
====================================================================== 
Date Submitted:             2016-04-21 03:38 EDT
Last Modified:              2016-04-21 03:38 EDT
====================================================================== 
Summary:                    InstallRequiredSystemLibraries needs updating for
MSVS2015
Description: 
Many system DLL's required by MSVS2015 are not identified by
InstallRequiredSystemLibraries.


Steps to Reproduce: 
- add_executable a simple hello world
- Use InstallRequiredSystemLibraries to install the required libraries
- Build an installer using WiX (or whatever)
- Install it on Windows 7 (no updates)

BUG: executable cannot be run because of missing DLL's.

Note:
- Updates might have helped but I didn't try it.
- Probably also affects Windows 8/8.1.
- Might not affect Windows 10? (see link)

https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/


Additional Information: 
Right now I'm using the following code to select the additional required
libraries. Please integrate something similar into
InstallRequiredSystemLibraries:

# InstallRequiredSystemLibraries does not properly support MSVS 14 yet, so do it
manually.
unset(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_DEBUG)
unset(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_RELEASE)
if(DEFINED MSVC_VERSION AND NOT MSVC_VERSION LESS 1900)
    # Internal: Architecture-appropriate library directory names.
    if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "ARM")
        set(_winsdk_arch8 arm) # what the WDK for Win8+ calls this architecture
    else()
        if(CMAKE_SIZEOF_VOID_P MATCHES "8")
            set(_winsdk_arch8 x64) # what the WDK for Win8+ calls this
architecture
        else()
            set(_winsdk_arch8 x86) # what the WDK for Win8+ calls this
architecture
        endif()
    endif()

    # The CRT is distributed with MSVS.
    get_filename_component(MSVS_DIR
       
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0;ShellFolder]"
ABSOLUTE)

    # As of MSVC 19 the CRT depends on the 'univeral' CRT (which is part of
Windows development kit 10 and above).
    #
http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introducing-the-universal-crt.aspx
    get_filename_component(WINDOWS_KIT_DIR
        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed
Roots;KitsRoot10]" ABSOLUTE)

    file(GLOB CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_DEBUG
       
"${MSVS_DIR}/VC/redist/debug_nonredist/${_winsdk_arch8}/Microsoft.VC140.DebugCRT/*.dll"
        "${WINDOWS_KIT_DIR}/Redist/ucrt/DLLs/${_winsdk_arch8}/api-ms-win-*.dll"
        "${WINDOWS_KIT_DIR}/bin/${_winsdk_arch8}/ucrt/*.dll"
    )
    file(GLOB CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_RELEASE
        "${MSVS_DIR}/VC/redist/${_winsdk_arch8}/Microsoft.VC140.CRT/*.dll"
        "${WINDOWS_KIT_DIR}/Redist/ucrt/DLLs/${_winsdk_arch8}/*.dll"
    )
endif()

====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2016-04-21 03:38 Lewoco         New Issue                                    
======================================================================



More information about the cmake-developers mailing list