Restore standalone Windows and Linux build and debug support
This commit is contained in:
33
cmake/MinGWRuntime.cmake
Normal file
33
cmake/MinGWRuntime.cmake
Normal 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()
|
||||
Reference in New Issue
Block a user