Add windows NSIS artifact extensions (#5244)

* MSVC: Move MSVC year detection to DetectMachine.cmake.
* NSIS: Add compiler to installer name
This commit is contained in:
Shmuel H
2019-10-20 23:28:42 +03:00
committed by GitHub
3 changed files with 34 additions and 22 deletions

View File

@@ -30,6 +30,25 @@ IF(WIN32)
ELSE(WIN64)
SET(IS_X86 TRUE)
ENDIF(WIN64)
if(MSVC)
SET(MSVC_VER ${CMAKE_CXX_COMPILER_VERSION})
IF(MSVC_VER VERSION_GREATER 19.20 OR MSVC_VER VERSION_EQUAL 19.20)
SET(LMMS_MSVC_GENERATOR "Visual Studio 16 2019")
SET(LMMS_MSVC_YEAR 2019) # Qt only provides binaries for MSVC 2017, but 2019 is binary compatible
ELSEIF(MSVC_VER VERSION_GREATER 19.10 OR MSVC_VER VERSION_EQUAL 19.10)
SET(LMMS_MSVC_GENERATOR "Visual Studio 15 2017")
SET(LMMS_MSVC_YEAR 2017)
ELSEIF(MSVC_VER VERSION_GREATER 19.0 OR MSVC_VER VERSION_EQUAL 19.0)
SET(LMMS_MSVC_GENERATOR "Visual Studio 14 2015")
SET(LMMS_MSVC_YEAR 2015)
ELSE()
MESSAGE(SEND_WARNING "Can't detect MSVC version: ${MSVC_VER}")
ENDIF()
unset(MSVC_VER)
endif()
ELSE(WIN32)
EXEC_PROGRAM( ${CMAKE_C_COMPILER} ARGS "-dumpmachine ${CMAKE_C_FLAGS}" OUTPUT_VARIABLE Machine )
MESSAGE("Machine: ${Machine}")

View File

@@ -1,3 +1,8 @@
SET(WIN_PLATFORM mingw)
if(LMMS_MSVC_YEAR)
SET(WIN_PLATFORM "msvc${LMMS_MSVC_YEAR}")
endif()
SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/cmake/nsis/nsis_branding.bmp")
IF(MSVC)
STRING(REPLACE "/" "\\\\" CPACK_PACKAGE_ICON ${CPACK_PACKAGE_ICON})
@@ -15,7 +20,7 @@ SET(CPACK_NSIS_DEFINES "
!include FileAssociation.nsh
!include LogicLib.nsh
!include WinVer.nsh")
SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}-win32")
SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}-${WIN_PLATFORM}-win32")
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
\\\${registerExtension} \\\"$INSTDIR\\\\${CMAKE_PROJECT_NAME}.exe\\\" \\\".mmp\\\" \\\"${PROJECT_NAME_UCASE} Project\\\"
\\\${registerExtension} \\\"$INSTDIR\\\\${CMAKE_PROJECT_NAME}.exe\\\" \\\".mmpz\\\" \\\"${PROJECT_NAME_UCASE} Project (compressed)\\\"
@@ -31,7 +36,7 @@ SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
" PARENT_SCOPE)
IF(WIN64)
SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}-win64")
SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}-${WIN_PLATFORM}-win64")
SET(CPACK_INSTALL_FIX "$PROGRAMFILES64\\\\${CPACK_PACKAGE_INSTALL_DIRECTORY}\\\\")
SET(CPACK_NSIS_DEFINES "
${CPACK_NSIS_DEFINES}

View File

@@ -17,27 +17,15 @@ ENDMACRO()
IF(LMMS_BUILD_WIN32 AND NOT LMMS_BUILD_WIN64)
ADD_SUBDIRECTORY(RemoteVstPlugin)
ELSEIF(LMMS_BUILD_WIN64 AND MSVC)
SET(MSVC_VER ${CMAKE_CXX_COMPILER_VERSION})
IF(NOT CMAKE_GENERATOR_32)
IF(MSVC_VER VERSION_GREATER 19.20 OR MSVC_VER VERSION_EQUAL 19.20)
SET(CMAKE_GENERATOR_32 "Visual Studio 16 2019")
SET(MSVC_YEAR 2017) # Qt only provides binaries for MSVC 2017, but 2019 is binary compatible
ELSEIF(MSVC_VER VERSION_GREATER 19.10 OR MSVC_VER VERSION_EQUAL 19.10)
SET(CMAKE_GENERATOR_32 "Visual Studio 15 2017")
SET(MSVC_YEAR 2017)
ELSEIF(MSVC_VER VERSION_GREATER 19.0 OR MSVC_VER VERSION_EQUAL 19.0)
SET(CMAKE_GENERATOR_32 "Visual Studio 14 2015")
SET(MSVC_YEAR 2015)
ELSE()
MESSAGE(SEND_WARNING "Can't build RemoteVstPlugin32, unknown MSVC version ${MSVC_VER} and no CMAKE_GENERATOR_32 set")
RETURN()
ENDIF()
ENDIF()
IF(NOT QT_32_PREFIX)
SET(LMMS_MSVC_YEAR_FOR_QT ${LMMS_MSVC_YEAR})
if(LMMS_MSVC_YEAR_FOR_QT EQUAL 2019)
SET(LMMS_MSVC_YEAR_FOR_QT 2017) # Qt only provides binaries for MSVC 2017, but 2019 is binary compatible
endif()
GET_FILENAME_COMPONENT(QT_BIN_DIR ${QT_QMAKE_EXECUTABLE} DIRECTORY)
SET(QT_32_PREFIX "${QT_BIN_DIR}/../../msvc${MSVC_YEAR}")
SET(QT_32_PREFIX "${QT_BIN_DIR}/../../msvc${LMMS_MSVC_YEAR_FOR_QT}")
ENDIF()
#TODO: qt5 installed using vcpkg: I don't know how to detect if the user built the x86 version of qt5 from here. At least not cleanly.
@@ -48,7 +36,7 @@ ELSEIF(LMMS_BUILD_WIN64 AND MSVC)
ExternalProject_Add(RemoteVstPlugin32
"${EXTERNALPROJECT_ARGS}"
CMAKE_GENERATOR "${CMAKE_GENERATOR_32}"
CMAKE_GENERATOR "${LMMS_MSVC_GENERATOR}"
CMAKE_GENERATOR_PLATFORM Win32
#CMAKE_GENERATOR_TOOLSET "${CMAKE_GENERATOR_TOOLSET}"
CMAKE_ARGS