function(bin2cpp_setup_dependencies ParentFolder) set(CONAN_DEPLOYER_DIR "${CMAKE_SOURCE_DIR}/build/full_deploy/host") if(EXISTS ${CONAN_DEPLOYER_DIR}) if(CMAKE_SYSTEM_NAME STREQUAL "Windows") file(GLOB_RECURSE SHARED_BINARIES ${CONAN_DEPLOYER_DIR}/*mimalloc*.dll) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") file(GLOB_RECURSE SHARED_BINARIES ${CONAN_DEPLOYER_DIR}/*mimalloc*.so*) endif() if(${IS_MULTI_CONFIG}) foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES}) foreach(file ${SHARED_BINARIES}) if(file MATCHES "/${CONFIG}/") list(APPEND SHARED_BINARIES_${CONFIG} ${file}) endif() endforeach() endforeach() add_custom_target(${PROJECT_NAME}CopySharedBinaries ALL DEPENDS SHARED_BINARIES COMMAND ${CMAKE_COMMAND} -E make_directory $ COMMAND ${CMAKE_COMMAND} -E $,copy_if_different,true> ${SHARED_BINARIES_Debug} $ COMMAND ${CMAKE_COMMAND} -E $,copy_if_different,true> ${SHARED_BINARIES_Release} $ COMMAND ${CMAKE_COMMAND} -E $,copy_if_different,true> ${SHARED_BINARIES_RelWithDebInfo} $ COMMENT "Copy shared binaries for ${PROJECT_NAME}" ) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}CopySharedBinaries) set_target_properties(${PROJECT_NAME}CopySharedBinaries PROPERTIES FOLDER UtilityTargets/${ParentFolder}) else() foreach(file ${SHARED_BINARIES}) if(file MATCHES "/${CMAKE_BUILD_TYPE}/") list(APPEND SHARED_BINARIES_${CMAKE_BUILD_TYPE} ${file}) endif() endforeach() add_custom_target(${PROJECT_NAME}CopySharedBinaries ALL DEPENDS ${SHARED_BINARIES_${CMAKE_BUILD_TYPE}} COMMAND ${CMAKE_COMMAND} -E make_directory $ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SHARED_BINARIES_${CMAKE_BUILD_TYPE}} $ COMMENT "Copy shared binaries for ${PROJECT_NAME}" ) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}CopySharedBinaries) set_target_properties(${PROJECT_NAME}CopySharedBinaries PROPERTIES FOLDER UtilityTargets/${ParentFolder}) endif() endif() if(CMAKE_SYSTEM_NAME STREQUAL "Windows") add_custom_target(${PROJECT_NAME}PatchMinject ALL COMMAND ${MINJECT_EXECUTABLE} -i -f $ COMMENT "Patching ${PROJECT_NAME} to ensure mimalloc dynamic override" ) add_dependencies(${PROJECT_NAME}PatchMinject ${PROJECT_NAME}) set_target_properties(${PROJECT_NAME}PatchMinject PROPERTIES FOLDER "UtilityTargets/${ParentFolder}") endif() endfunction()