diff --git a/CMakeLists.txt b/CMakeLists.txt index a41229987..a3b909b57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -403,6 +403,29 @@ if(SLIC3R_STATIC) set(USE_BLOSC TRUE) endif() +set(TOP_LEVEL_PROJECT_DIR ${PROJECT_SOURCE_DIR}) +function(prusaslicer_copy_dlls target) + if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") + set(_bits 64) + elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") + set(_bits 32) + endif () + + get_target_property(_out_dir ${target} BINARY_DIR) + + # This has to be a separate target due to the windows command line lenght limits + add_custom_command(TARGET ${target} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${TOP_LEVEL_PROJECT_DIR}/deps/GMP/gmp/lib/win${_bits}/libgmp-10.dll ${_out_dir}/ + COMMENT "Copy gmp runtime to build tree" + VERBATIM) + + add_custom_command(TARGET ${target} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${TOP_LEVEL_PROJECT_DIR}/deps/MPFR/mpfr/lib/win${_bits}/libmpfr-4.dll ${_out_dir}/ + COMMENT "Copy mpfr runtime to build tree" + VERBATIM) + +endfunction() + #find_package(OpenVDB 5.0 COMPONENTS openvdb) #slic3r_remap_configs(IlmBase::Half RelWithDebInfo Release) diff --git a/sandboxes/meshboolean/CMakeLists.txt b/sandboxes/meshboolean/CMakeLists.txt index 69ea13dce..17e876573 100644 --- a/sandboxes/meshboolean/CMakeLists.txt +++ b/sandboxes/meshboolean/CMakeLists.txt @@ -7,3 +7,7 @@ find_package(CGAL REQUIRED) add_executable(meshboolean MeshBoolean.cpp) target_link_libraries(meshboolean libslic3r CGAL::CGAL) + +if (WIN32) + prusaslicer_copy_dlls(meshboolean) +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 530512cbb..52ec0f144 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -195,6 +195,11 @@ if (WIN32) VERBATIM ) endif () + + # This has to be a separate target due to the windows command line lenght limits + add_custom_target(PrusaSlicerDllsCopy ALL DEPENDS PrusaSlicer) + prusaslicer_copy_dlls(PrusaSlicerDllsCopy) + elseif (XCODE) # Because of Debug/Release/etc. configurations (similar to MSVC) the slic3r binary is located in an extra level add_custom_command(TARGET PrusaSlicer POST_BUILD