diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c7f07a..990e4d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,14 +1,43 @@ cmake_minimum_required(VERSION 3.12) -project(MinetestMapperGUI - VERSION 1.0.0.0) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +include(getGitVersion) + +project(MinetestMapperGui + VERSION ${git_version_major}.${git_version_minor}.${git_version_patch}.${git_commits_since_last_tag} + HOMEPAGE_URL "https://bitbucket.org/adrido/minetestmappergui" + DESCRIPTION "Graphical Userinterface for MinetestMapper") set(USE_FOLDERS ON) +set(CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT "comp_sys_runtime") +set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION ".") +include(InstallRequiredSystemLibraries) + add_subdirectory("Minetestmapper/") add_subdirectory("MinetestMapperGUI/") -set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION ".") -include(InstallRequiredSystemLibraries) -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md") +cpack_add_component(comp_sys_runtime + DISPLAY_NAME "C++ Runtime") + +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt") +set(CPACK_PACKAGE_VENDOR "adrido") + +set(CPACK_PACKAGE_EXECUTABLES MinetestMapperGUI "Minetest Mapper GUI") + +set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/MinetestMapperGUI/images/icon.ico") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}") + +set(CPACK_WIX_CULTURES "en-us;en") +set(CPACK_WIX_PRODUCT_GUID "{366C1F8C-4CDD-44E9-B521-4B2541B51980}") +set(CPACK_WIX_UPGRADE_GUID "{444FE142-7C64-4F12-9F07-254A710076B1}") +set(CPACK_WIX_PRODUCT_ICON "${CPACK_PACKAGE_ICON}") +set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/WIX_UI_BANNER.BMP") +set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/WIX_UI_DIALOG.BMP") +# Schould the program menu folder be MinetestMapper or MinetestMapperGui or Minetest or empty (current)? +#set(CPACK_WIX_PROGRAM_MENU_FOLDER ".") +set(CPACK_WIX_PROPERTY_ARPCOMMENTS "${CMAKE_PROJECT_DESCRIPTION}") +set(CPACK_WIX_PROPERTY_ARPHELPLINK "${CMAKE_PROJECT_HOMEPAGE_URL}") +set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "${CMAKE_PROJECT_HOMEPAGE_URL}") + include(CPack) diff --git a/LICENSE.md b/LICENSE.txt similarity index 100% rename from LICENSE.md rename to LICENSE.txt diff --git a/MinetestMapperGUI b/MinetestMapperGUI index a2277a9..693301a 160000 --- a/MinetestMapperGUI +++ b/MinetestMapperGUI @@ -1 +1 @@ -Subproject commit a2277a972d4c1306393edd0aa89cd6fd22659a10 +Subproject commit 693301a978c3c17f477eafd63f781c6c033cebba diff --git a/README.md b/README.md index 7889aaf..c34e519 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ MinetestMapperGUI-Bundle ======================== +Windows: [![Build status](https://ci.appveyor.com/api/projects/status/c7ms6hu91mirhyn1?svg=true)](https://ci.appveyor.com/project/adrido/minetestmappergui-bundle) + + + Contains the Minetestmapper and the MinetestmapperGui as bundle. Building on Windows diff --git a/WIX_UI_BANNER.BMP b/WIX_UI_BANNER.BMP new file mode 100644 index 0000000..de161db Binary files /dev/null and b/WIX_UI_BANNER.BMP differ diff --git a/WIX_UI_DIALOG.BMP b/WIX_UI_DIALOG.BMP new file mode 100644 index 0000000..b91cfd9 Binary files /dev/null and b/WIX_UI_DIALOG.BMP differ diff --git a/build.ps1 b/build.ps1 index 16786d9..0ee3f5d 100644 --- a/build.ps1 +++ b/build.ps1 @@ -24,7 +24,10 @@ param ( [int32]$vs_version = 15, ## Specify the qt version to use - $qt_version = "5.12.1" + $qt_version = "5.12.1", + + ## Build a installer instead of a portable version + [switch]$installer ) $aTriplet = $triplet.Split('-') @@ -95,11 +98,18 @@ try { cmake --build . --config Release if ($LASTEXITCODE -ne 0) {throw "Error while building"} - cpack -G "ZIP" - if ($LASTEXITCODE -ne 0) {throw "Error while packing"} + if($installer){ + cpack -G "WIX" + if ($LASTEXITCODE -ne 0) {throw "Error while packing Installer"} + } + else { + cpack -G "ZIP" + if ($LASTEXITCODE -ne 0) {throw "Error while packing"} + } } catch { Write-Error $_.Exception.Message + exit 1 } Finally { Pop-Location diff --git a/cmake/getGitVersion.cmake b/cmake/getGitVersion.cmake new file mode 100644 index 0000000..1ab81ed --- /dev/null +++ b/cmake/getGitVersion.cmake @@ -0,0 +1,39 @@ +find_package(Git REQUIRED) + +execute_process( + COMMAND "${GIT_EXECUTABLE}" describe --long --dirty --tags --match v[0-9]* + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_tag + ERROR_VARIABLE git_error + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + +if( NOT git_result EQUAL 0 ) + message( FATAL_ERROR "Failed to execute Git: ${git_error}" ) +endif() + +if( git_tag MATCHES "v([0-9]+).([0-9]+).([0-9]+)-([0-9]+)-g([0-9,a-f]+)(-dirty)?" ) + set( git_version_major "${CMAKE_MATCH_1}" ) + set( git_version_minor "${CMAKE_MATCH_2}" ) + set( git_version_patch "${CMAKE_MATCH_3}" ) + set( git_commits_since_last_tag "${CMAKE_MATCH_4}" ) + set( git_hash "${CMAKE_MATCH_5}" ) + set( git_wip "${CMAKE_MATCH_6}" ) +else() + message( FATAL_ERROR "Git tag isn't valid semantic version: [${git_tag}]" ) +endif() + +execute_process( + COMMAND "${GIT_EXECUTABLE}" rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_current_branch + ERROR_VARIABLE git_error + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) +if( NOT git_result EQUAL 0 ) + message( FATAL_ERROR "Failed to execute Git: ${git_error}" ) +endif()