From 2876a17844ea3e1d43bcb31197563f1c6e36f740 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 25 Jun 2019 19:08:02 +0200 Subject: [PATCH] Build: fixed Windows build --- CMakeLists.txt | 18 ++++++++++++++---- cmake/cpack/CMakeLists.txt | 5 +++-- external/CMakeLists.txt | 24 ++++++++++++++++++++---- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6aa56d4b4..661297835 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -187,8 +187,15 @@ elseif(APPLE) "${CMAKE_BINARY_DIR}/Info.plist" @ONLY) elseif (WIN32) # check compiler version - if(MSVC_VERSION GREATER 1919 AND MSVC_VERSION LESS 1910) - message(FATAL_ERROR "You must use Microsoft Visual Studio 2017 as compiler, aka MSVC 14.1") + # check compiler version + if(MSVC_VERSION GREATER 1910 AND MSVC_VERSION LESS 1919) + set(VS2017 ON) + elseif(MSVC_VERSION GREATER 1899 AND MSVC_VERSION LESS 1910) + set(VS2015 ON) + endif() + + if(NOT VS2015 AND NOT VS2017) + message(FATAL_ERROR "You must use Microsoft Visual Studio 2015 or 2017 as compiler") endif() # used on code but not defined on VS2017 @@ -199,6 +206,9 @@ elseif (WIN32) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") # find Qt folder + if(DEFINED QT_PATH) + set (QT_MISSING False) + endif() include(QtLocator) # in alternative we can use ExternalProject @@ -214,7 +224,7 @@ elseif (WIN32) # ffmpeg set(FFMPEG_INCLUDE_DIRS "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/include" CACHE INTERNAL "") - #set(FFMPEG_LIBRARIES) + set(FFMPEG_LIBRARIES "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/bin" CACHE INTERNAL "") set(AVCODEC_INCLUDE_DIRS "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/include" CACHE INTERNAL "") set(AVCODEC_LIBRARIES "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/lib/avcodec.lib" CACHE INTERNAL "") set(AVFORMAT_INCLUDE_DIRS "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/include" CACHE INTERNAL "") @@ -228,7 +238,7 @@ elseif (WIN32) # used on fixup_bundle phase set(WINDOWS_FIXUP_BUNDLE_LIB_DIRS - "${Qt5_DIR}/../../../bin" + "${Qt5_DIR}../../../bin" "${EXTERNAL_LIBRARY_FOLDER}/fftw-3" "${EXTERNAL_LIBRARY_FOLDER}/libusb/MS64/dll" "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/bin" diff --git a/cmake/cpack/CMakeLists.txt b/cmake/cpack/CMakeLists.txt index 0b01a25a9..14a54c82a 100644 --- a/cmake/cpack/CMakeLists.txt +++ b/cmake/cpack/CMakeLists.txt @@ -54,7 +54,6 @@ if(APPLE AND BUNDLE AND BUILD_GUI) PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE PATTERN "*_debug${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE ) - # add plugins path for Mac Bundle install (CODE " get_filename_component (the_qt_conf \"\${CMAKE_INSTALL_PREFIX}/qt.conf\" REALPATH) @@ -141,7 +140,7 @@ elseif(LINUX AND BUNDLE) set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${APPLICATION_MAINTAINER}") set(CPACK_DEBIAN_PACKAGE_SECTION "hamradio") - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libasound2, libfftw3-single3, libgcc1, libgl1-mesa-glx, libqt5core5a, libqt5gui5, libqt5multimedia5, libqt5network5, libqt5opengl5, libqt5widgets5, libqt5multimedia5-plugins, libstdc++6, libusb-1.0-0, pulseaudio, libxml2, ffmpeg, libopus0, codec2, libairspy0, libhackrf0, librtlsdr0, libbladerf1, libmirisdr0, libiio0") + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libasound2, libfftw3-single3, libgcc1, libgl1-mesa-glx, libqt5core5a, libqt5gui5, libqt5websockets5, libqt5multimedia5, libqt5network5, libqt5opengl5, libqt5widgets5, libqt5multimedia5-plugins, libstdc++6, libusb-1.0-0, pulseaudio, libxml2, ffmpeg, libopus0, codec2, libairspy0, libhackrf0, librtlsdr0, libbladerf1, libmirisdr0, libiio0") if ("${LSB_CODENAME}" STREQUAL "buster") # Debian 10 set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libavcodec58, libavformat58, libairspyhf1, libopencv-imgproc3.2, libopencv-highgui3.2, limesuite, soapysdr-tools") @@ -253,6 +252,8 @@ elseif(WIN32 OR MINGW) # unfortunately some libraries are dependencies of dll so we copy by hand # TODO check if we can use fixup_bundle() and have libraries on root path + # inputkiwisdr.dll + install(FILES "${Qt5_DIR}/../../../bin/Qt5WebSockets${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") # demoddatv.dll install(DIRECTORY "${FFMPEG_LIBRARIES}/" DESTINATION "${INSTALL_LIB_DIR}" FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}") diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index fcee6a826..df17611d8 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -102,11 +102,27 @@ else() endif(LINUX) if(WIN32) - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(VCREDIST_FILE "vc_redist.x64${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") - # maybe add arm architecture + if(VS2015) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(VCREDIST_FILE "vcredist_msvc2015_x64${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + # maybe add arm architecture + else() + set(VCREDIST_FILE "vcredist_msvc2015_x86${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + endif() + elseif(VS2017) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(VCREDIST_FILE "vcredist_msvc2017_x64${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + # maybe add arm architecture + else() + set(VCREDIST_FILE "vcredist_msvc2017_x86${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + endif() else() - set(VCREDIST_FILE "vc_redist.x86${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(VCREDIST_FILE "vc_redist.x64${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + # maybe add arm architecture + else() + set(VCREDIST_FILE "vc_redist.x86${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + endif() endif() install(FILES "${EXTERNAL_LIBRARY_FOLDER}/vcredist/${VCREDIST_FILE}" DESTINATION "${INSTALL_BIN_DIR}") endif(WIN32)