Browse Source

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
QGC4.4
kistlin 4 years ago committed by Daniel Agar
parent
commit
88204aff2f
  1. 1
      CMakeLists.txt
  2. 5
      cmake/QGCDeploy.cmake
  3. 1
      libs/CMakeLists.txt
  4. 16
      libs/sdl2/CMakeLists.txt
  5. 12
      src/Joystick/CMakeLists.txt

1
CMakeLists.txt

@ -238,4 +238,3 @@ if(NOT QT_MKSPEC MATCHES "winrt") @@ -238,4 +238,3 @@ if(NOT QT_MKSPEC MATCHES "winrt")
endif()
include(QGCDeploy)

5
cmake/QGCDeploy.cmake

@ -39,6 +39,11 @@ elseif(WIN32) @@ -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 $<TARGET_FILE:sdl2> $<TARGET_FILE_DIR:QGroundControl>
)
elseif(ANDROID)
include(AddQtAndroidApk)
add_qt_android_apk(QGroundControl.apk QGroundControl

1
libs/CMakeLists.txt

@ -2,6 +2,7 @@ add_subdirectory(libevents) @@ -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)

16
libs/sdl2/CMakeLists.txt

@ -0,0 +1,16 @@ @@ -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")

12
src/Joystick/CMakeLists.txt

@ -25,17 +25,7 @@ target_link_libraries(Joystick @@ -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})

Loading…
Cancel
Save