Restore standalone Windows and Linux build and debug support

This commit is contained in:
maxwes08
2026-10-23 12:58:35 +02:00
parent 85d4fb828a
commit 4c435fdd76
8 changed files with 205 additions and 55 deletions

33
cmake/MinGWRuntime.cmake Normal file
View File

@@ -0,0 +1,33 @@
# Keep standalone GCC executables runnable without modifying the user's PATH.
if(NOT MINGW OR NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
return()
endif()
get_filename_component(compiler_directory "${CMAKE_CXX_COMPILER}" DIRECTORY)
set(runtime_dlls)
foreach(runtime_names
"libgcc_s_seh-1.dll|libgcc_s_dw2-1.dll|libgcc_s_sjlj-1.dll"
"libstdc++-6.dll"
"libwinpthread-1.dll")
string(REPLACE "|" ";" runtime_names "${runtime_names}")
find_file(runtime_dll NAMES ${runtime_names}
PATHS "${compiler_directory}" NO_DEFAULT_PATH NO_CACHE)
if(NOT runtime_dll)
message(FATAL_ERROR "Cannot find MinGW runtime ${runtime_names} in ${compiler_directory}")
endif()
list(APPEND runtime_dlls "${runtime_dll}")
unset(runtime_dll)
endforeach()
# This file is included after all project executables have been declared.
get_property(project_targets DIRECTORY PROPERTY BUILDSYSTEM_TARGETS)
foreach(project_target IN LISTS project_targets)
get_target_property(target_type "${project_target}" TYPE)
if(target_type STREQUAL "EXECUTABLE")
add_custom_command(TARGET "${project_target}" POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
${runtime_dlls} "$<TARGET_FILE_DIR:${project_target}>"
COMMENT "Copying MinGW runtime DLLs for ${project_target}"
VERBATIM)
endif()
endforeach()