From 88204aff2f1203dd2a81f4e4f5bd715e78425f1c Mon Sep 17 00:00:00 2001 From: kistlin Date: Fri, 11 Jun 2021 19:11:29 +0200 Subject: [PATCH] fix SDL2 dll deployment on windows when using cmake - move current SDL2 cmake code on windows to separate file - add a step for dll deployment on windows --- CMakeLists.txt | 1 - cmake/QGCDeploy.cmake | 5 +++++ libs/CMakeLists.txt | 1 + libs/sdl2/CMakeLists.txt | 16 ++++++++++++++++ src/Joystick/CMakeLists.txt | 12 +----------- 5 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 libs/sdl2/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index a8a503c..2860fbe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -238,4 +238,3 @@ if(NOT QT_MKSPEC MATCHES "winrt") endif() include(QGCDeploy) - diff --git a/cmake/QGCDeploy.cmake b/cmake/QGCDeploy.cmake index de6a875..d31416f 100644 --- a/cmake/QGCDeploy.cmake +++ b/cmake/QGCDeploy.cmake @@ -39,6 +39,11 @@ elseif(WIN32) include(Windeployqt) windeployqt(QGroundControl "QGroundControl-installer.exe") + add_custom_command(TARGET QGroundControl POST_BUILD + COMMAND ${CMAKE_COMMAND} -E + copy_if_different $ $ + ) + elseif(ANDROID) include(AddQtAndroidApk) add_qt_android_apk(QGroundControl.apk QGroundControl diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt index 13229cc..ab19aaf 100644 --- a/libs/CMakeLists.txt +++ b/libs/CMakeLists.txt @@ -2,6 +2,7 @@ add_subdirectory(libevents) add_subdirectory(qtandroidserialport) add_subdirectory(shapelib) if (WIN32) + add_subdirectory(sdl2) add_subdirectory(zlib) endif (WIN32) if (GST_FOUND) diff --git a/libs/sdl2/CMakeLists.txt b/libs/sdl2/CMakeLists.txt new file mode 100644 index 0000000..cd6909b --- /dev/null +++ b/libs/sdl2/CMakeLists.txt @@ -0,0 +1,16 @@ +set(SDL2_LIB_BASE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/msvc/lib) + +add_library(sdl2 SHARED IMPORTED GLOBAL) + +if(CMAKE_SIZEOF_VOID_P EQUAL 8) # 64 bits + set(SDL2_LIB_BASE_PATH ${SDL2_LIB_BASE_PATH}/x64) +elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) # 32 bits + set(SDL2_LIB_BASE_PATH ${SDL2_LIB_BASE_PATH}/x86) +endif() + +target_link_libraries(sdl2 INTERFACE ${SDL2_LIB_BASE_PATH}/SDL2.lib) +target_include_directories(sdl2 INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/msvc/include) +set_property(TARGET sdl2 PROPERTY IMPORTED_IMPLIB_RELEASE "${SDL2_LIB_BASE_PATH}/SDL2.lib") +set_property(TARGET sdl2 PROPERTY IMPORTED_LOCATION_RELEASE "${SDL2_LIB_BASE_PATH}/SDL2.dll") +set_property(TARGET sdl2 PROPERTY IMPORTED_IMPLIB_DEBUG "${SDL2_LIB_BASE_PATH}/SDL2.lib") +set_property(TARGET sdl2 PROPERTY IMPORTED_LOCATION_DEBUG "${SDL2_LIB_BASE_PATH}/SDL2.dll") \ No newline at end of file diff --git a/src/Joystick/CMakeLists.txt b/src/Joystick/CMakeLists.txt index 01a85c4..af9b1be 100644 --- a/src/Joystick/CMakeLists.txt +++ b/src/Joystick/CMakeLists.txt @@ -25,17 +25,7 @@ target_link_libraries(Joystick target_include_directories(Joystick PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) if(WIN32) - include_directories(${CMAKE_SOURCE_DIR}/libs/sdl2/msvc/include) - # Support both 32 and 64 bit builds - if (${CMAKE_SIZEOF_VOID_P} MATCHES 8) - set(SDL2_LIBRARIES "${CMAKE_SOURCE_DIR}/libs/sdl2/msvc/lib/x64/SDL2.lib;${CMAKE_SOURCE_DIR}/libs/sdl2/msvc/lib/x64/SDL2main.lib") - else () - set(SDL2_LIBRARIES "${CMAKE_SOURCE_DIR}/libs/sdl2/msvc/lib/x86/SDL2.lib;${CMAKE_SOURCE_DIR}/libs/sdl2/msvc/lib/x86/SDL2main.lib") - endif () - - string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES) - - target_link_libraries(Joystick PUBLIC ${SDL2_LIBRARIES}) + target_link_libraries(Joystick PUBLIC sdl2) else() find_package(SDL2 REQUIRED) if (IS_DIRECTORY ${SDL2_INCLUDE_DIRS})