diff options
| author | Portal <93601172+PortalG@users.noreply.github.com> | 2026-03-05 02:30:22 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-05 14:30:22 +0700 |
| commit | fcc9970ec6148bf63a88f4fb1bf7f4abb4b107a2 (patch) | |
| tree | 8a65ebd5048be937b5da3cdb450a945f27446714 /CMakeLists.txt | |
| parent | 053eb0119cc5d154a63b19cbddd8e8d91404068b (diff) | |
Replace CopyAssets.cmake with multithreaded Robocopy (and rsync) implementation. (#410)
* Replace CopyAssets.cmake with Robocopy implementation.
* Replace CopyAssets.cmake with Robocopy implementation.
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 62 |
1 files changed, 54 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d83c5c8..916f1315 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,13 +89,59 @@ target_link_libraries(MinecraftClient PRIVATE > ) -add_custom_command(TARGET MinecraftClient POST_BUILD - COMMAND "${CMAKE_COMMAND}" - -DPROJECT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" - -DOUTPUT_DIR="$<TARGET_FILE_DIR:MinecraftClient>" - -DCONFIGURATION=$<CONFIG> - -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyAssets.cmake" - VERBATIM -) +if(WIN32) + message(STATUS "Starting redist copy...") + execute_process( + COMMAND robocopy.exe + "${CMAKE_CURRENT_SOURCE_DIR}/x64/Release" + "${CMAKE_CURRENT_BINARY_DIR}" + /S /MT /R:0 /W:0 /NP + ) + message(STATUS "Starting asset copy...") + execute_process( + COMMAND robocopy.exe + "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client" + "${CMAKE_CURRENT_BINARY_DIR}" + /S /MT /R:0 /W:0 /NP + /XF "*.cpp" "*.c" "*.h" "*.hpp" "*.asm" + "*.xml" "*.lang" "*.vcxproj" "*.vcxproj.*" "*.sln" + "*.docx" "*.xls" + "*.bat" "*.cmd" "*.ps1" "*.py" + "*Test*" + /XD "Durango*" "Orbis*" "PS*" "Xbox" + ) + message(STATUS "Patching Windows64Media...") + execute_process( + COMMAND robocopy.exe + "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/DurangoMedia" + "${CMAKE_CURRENT_BINARY_DIR}/Windows64Media" + /S /MT /R:0 /W:0 /NP + /XF "*.h" "*.xml" "*.lang" "*.bat" + ) +elseif(UNIX) + message(STATUS "Starting redist copy...") + execute_process( + COMMAND rsync -av "${CMAKE_CURRENT_SOURCE_DIR}/x64/Release/" "${CMAKE_CURRENT_BINARY_DIR}/" + ) + message(STATUS "Starting asset copy...") + execute_process( + COMMAND rsync -av + "--exclude=*.cpp" "--exclude=*.c" "--exclude=*.h" "--exclude=*.hpp" "--exclude=*.asm" + "--exclude=*.xml" "--exclude=*.lang" "--exclude=*.vcxproj" "--exclude=*.vcxproj.*" "--exclude=*.sln" + "--exclude=*.docx" "--exclude=*.xls" + "--exclude=*.bat" "--exclude=*.cmd" "--exclude=*.ps1" "--exclude=*.py" + "--exclude=*Test*" + "--exclude=Durango*" "--exclude=Orbis*" "--exclude=PS*" "--exclude=Xbox" + "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/" "${CMAKE_CURRENT_BINARY_DIR}/" + ) + message(STATUS "Patching Windows64Media...") + execute_process( + COMMAND rsync -av + "--exclude=*.h" "--exclude=*.xml" "--exclude=*.lang" "--exclude=*.bat" + "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/DurangoMedia/" "${CMAKE_CURRENT_BINARY_DIR}/Windows64Media/" + ) +else() + message(FATAL_ERROR "Redist and asset copying is only supported on Windows (Robocopy) and Unix systems (rsync).") +endif() set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MinecraftClient) |
