windows: distribute vcredist loose files

This commit is contained in:
Shawn Hoffman 2022-09-14 02:42:43 -07:00
parent 7eece76e2b
commit 0837af4344
3 changed files with 39 additions and 0 deletions

View File

@ -337,3 +337,8 @@ proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
This program uses VC++ Redistributable code. The license for those object
files can be found at:
https://visualstudio.microsoft.com/license-terms/vs2022-ga-community/

View File

@ -440,6 +440,28 @@ if(WIN32)
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/qt.conf.win" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf"
)
# Copy VC++ Redist.
# NOTE This *intentionally* does not copy debug redist files.
# TODO This should really occur for any executable target.
# TODO Actually use cmake 'install' and InstallRequiredSystemLibraries.
if(MSVC_C_ARCHITECTURE_ID)
string(TOLOWER "${MSVC_C_ARCHITECTURE_ID}" CMAKE_MSVC_ARCH)
elseif(MSVC_CXX_ARCHITECTURE_ID)
string(TOLOWER "${MSVC_CXX_ARCHITECTURE_ID}" CMAKE_MSVC_ARCH)
else()
set(CMAKE_MSVC_ARCH x86)
endif()
set(MSVC_REDIST_NAME VC${MSVC_TOOLSET_VERSION})
find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.CRT)
mark_as_advanced(MSVC_REDIST_DIR)
set(MSVC_CRT_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.CRT")
file(GLOB MSVC_REDIST_DLLS "${MSVC_CRT_DIR}/*.dll")
foreach(MsvcRedistDll IN LISTS MSVC_REDIST_DLLS)
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${MsvcRedistDll}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
)
endforeach()
# Delegate to Qt's official deployment binary on Windows to copy over the necessary Qt-specific libraries, etc.
get_target_property(MOC_EXECUTABLE_LOCATION Qt${QT_VERSION_MAJOR}::moc IMPORTED_LOCATION)
get_filename_component(QT_BINARY_DIRECTORY "${MOC_EXECUTABLE_LOCATION}" DIRECTORY)

View File

@ -84,4 +84,16 @@
<AdditionalOptions>/NODEFAULTLIB:msvcrt %(AdditionalOptions)</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<Target Name="CopyVCRedist" AfterTargets="Build" Condition="'$(ConfigurationType)'=='Application'">
<ItemGroup>
<VCRedistSourceFiles
Include="$(VCToolsRedistInstallDir)$(Platform)\Microsoft.VC$(PlatformToolsetVersion).CRT\*.dll" />
</ItemGroup>
<Copy
SourceFiles="@(VCRedistSourceFiles)"
DestinationFolder="$(BinaryOutputDir)"
SkipUnchangedFiles="true"
/>
</Target>
</Project>