summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt99
1 files changed, 23 insertions, 76 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 35125b9..a0d70d3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,6 +20,7 @@ project(assignment-list VERSION 0.0.${patchdate} HOMEPAGE_URL "https://github.co
set(ORGANIZATION_NAME "assignment-list-qt")
set(PROJECT_TITLE "Assignment List")
+set(NSIS_PRODUCT_VERSION "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}.0")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED)
@@ -36,6 +37,7 @@ option(IS_RELEASE "Set if this is a release candidate" no)
if(IS_RELEASE)
unset(CMAKE_PROJECT_VERSION_PATCH)
message("Marked as release: excluding patch in version number")
+ set(NSIS_PRODUCT_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.0.0")
endif()
set(qt_components "Core" "Gui" "Sql" "UiTools" "Widgets")
@@ -130,6 +132,9 @@ set(project_sources_full
)
configure_file(config.h.in ${CMAKE_CURRENT_SOURCE_DIR}/config.h @ONLY)
+if(CMAKE_SYSTEM MATCHES "Windows*")
+ configure_file(nsis/installer.nsi.in ${CMAKE_CURRENT_BINARY_DIR}/installer.nsi @ONLY)
+endif()
#add_executable(assignment-list
# ${project_sources_full}
@@ -165,14 +170,11 @@ target_link_libraries(assignment-list PUBLIC ${qt_libraries})
# Installation
include(GNUInstallDirs)
-# Do not install normally if on Windows (we will install to / rather than /bin of install location)
-if(NOT CMAKE_SYSTEM MATCHES "Windows*")
- install(TARGETS assignment-list
- BUNDLE DESTINATION .
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- )
-endif()
+install(TARGETS assignment-list
+ BUNDLE DESTINATION .
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+)
# install desktop entry and icon
if(CMAKE_SYSTEM MATCHES "Linux.*")
@@ -197,74 +199,19 @@ set(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR}/README.md)
set(CPACK_PACKAGE_CONTACT "Louie Shprung <lshprung@tutanota.com>")
set(CPACK_SOURCE_IGNORE_FILES "/\.git.*;/\.cache;/build;/compile_commands\.json$;/config\.h$;/data/assignment-list\.desktop$")
-## CPack NSIS configuration
-## Allow regular users to run installer
-#set(CPACK_NSIS_DEFINES "RequestExecutionLevel user")
-## Set installer icons
-#set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/data/assignment-list.ico")
-#set(CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}/data/assignment-list.ico")
-## Install a StartMenu Shortcut
-#set(CPACK_NSIS_CREATE_ICONS_EXTRA
-# "CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${PROJECT_TITLE}.lnk' '$INSTDIR\\\\assignment-list.exe'"
-#)
-#set(CPACK_NSIS_DELETE_ICONS_EXTRA
-# "Delete '$SMPROGRAMS\\\\$START_MENU\\\\${PROJECT_TITLE}.lnk'"
-#)
-## Set FinishPage
-#set(CPACK_NSIS_EXECUTABLES_DIRECTORY "/")
-#set(CPACK_NSIS_MUI_FINISHPAGE_RUN "assignment-list.exe")
-## Based on https://stackoverflow.com/q/69139412
-#if(CMAKE_SYSTEM MATCHES "Windows*")
-# set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_TITLE})
-# include(InstallRequiredSystemLibraries)
-# find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}")
-# add_custom_command(TARGET assignment-list POST_BUILD
-# COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/qtDeploy/
-# COMMAND ${WINDEPLOYQT_EXECUTABLE}
-# --dir ${CMAKE_BINARY_DIR}/qtDeploy $<TARGET_FILE:assignment-list>
-# )
-## Install dlls
-# install(CODE "set(CMAKE_MINGW_SYSTEM_LIBRARY_PATH \"${CMAKE_FIND_ROOT_PATH}/bin/\")")
-# install(
-# DIRECTORY ${CMAKE_BINARY_DIR}/qtDeploy/
-# DESTINATION /
-# FILES_MATCHING PATTERN "*.*"
-# )
-## FIXME this only works on MSYS2 with NO flexibility!
-# find_file(SQLITE_DLL "libsqlite3-0.dll" PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} ${CMAKE_MINGW_SYSTEM_LIBRARY_PATH} NO_DEFAULT_PATH)
-# target_link_libraries(assignment-list PRIVATE ${SQLITE_DLL})
-# install(FILES ${SQLITE_DLL} DESTINATION /)
-## Based on https://discourse.cmake.org/t/runtime-dependencies-cannot-find-dll/3782
-## and https://discourse.cmake.org/t/get-runtime-dependencies-does-not-seem-to-work-with-mingw/2239
-# install(TARGETS assignment-list
-# RUNTIME_DEPENDENCIES
-# PRE_EXCLUDE_REGEXES "api-ms-" "ext-ms-"
-# POST_EXCLUDE_REGEXES ".*system32/.*\\.dll"
-# DIRECTORIES ${CMAKE_SYSTEM_LIBRARY_PATH} ${CMAKE_MINGW_SYSTEM_LIBRARY_PATH}
-# DESTINATION /
-# )
-# #install(CODE [[
-# # file(GET_RUNTIME_DEPENDENCIES
-# # LIBRARIES "$<TARGET_FILE:assignment-list>"
-# # RESOLVED_DEPENDENCIES_VAR _r_deps
-# # UNRESOLVED_DEPENDENCIES_VAR _u_deps
-# # DIRECTORIES ${DEPENDENCY_PATHS}
-# # PRE_EXCLUDE_REGEXES "api-ms-" "ext-ms-"
-# # POST_EXCLUDE_REGEXES" ".*system32/.*\\.dll"
-# # )
-# # foreach(_file ${_r_deps})
-# # file(INSTALL
-# # DESTINATION "${CMAKE_INSTALL_BINDIR}"
-# # TYPE SHARED_LIBRARY
-# # FILES "${_file}"
-# # )
-# # endforeach()
-# # list(LENGTH _u_deps _u_length)
-# # if("${_u_length}" GREATER 0)
-# # message(WARNING "Unresolved dependencies detected!")
-# # endif()
-# #]])
-#endif()
+# Get Windows dependencies/dlls for nsis
+# Based on https://stackoverflow.com/q/69139412
+if(CMAKE_SYSTEM MATCHES "Windows*")
+ set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_TITLE})
+ include(InstallRequiredSystemLibraries)
+ find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}")
+ add_custom_command(TARGET assignment-list POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/qtDeploy/
+ COMMAND ${WINDEPLOYQT_EXECUTABLE}
+ --dir ${CMAKE_BINARY_DIR}/qtDeploy
+ --compiler-runtime $<TARGET_FILE:assignment-list>
+ )
+endif()
# CPack Deb configuration
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)