2019-03-22 05:31:25 -07:00
|
|
|
cmake_minimum_required(VERSION 3.10)
|
2019-03-15 08:56:28 -07:00
|
|
|
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
|
|
|
set(USE_FOLDERS ON)
|
|
|
|
include(getGitVersion)
|
|
|
|
|
|
|
|
project(MinetestMapperGUI
|
|
|
|
VERSION ${git_version_major}.${git_version_minor}.${git_version_patch}.${git_commits_since_last_tag}
|
|
|
|
DESCRIPTION "Graphical userinterface for Minetestmapper"
|
|
|
|
LANGUAGES CXX)
|
|
|
|
|
|
|
|
message(STATUS "Version: ${PROJECT_VERSION}.")
|
|
|
|
|
|
|
|
if(MSVC_VERSION GREATER_EQUAL 1900)
|
|
|
|
# MSVC does not support c++ 11 but c++ 14
|
|
|
|
set(CMAKE_CXX_STANDARD 14)
|
|
|
|
else()
|
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
|
|
endif()
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
|
2019-03-24 00:30:40 -07:00
|
|
|
option(BUILD_PORTABLE "To create a MinetestMapperGUI that uses only the current directory." OFF)
|
|
|
|
|
2019-03-15 08:56:28 -07:00
|
|
|
set(SOURCES
|
|
|
|
main.cpp
|
|
|
|
mainwindow.cpp
|
|
|
|
colorlineedit.cpp
|
|
|
|
geometry.cpp
|
|
|
|
geometrywidget.cpp
|
|
|
|
configdialog.cpp
|
|
|
|
makecolors.cpp
|
|
|
|
drawmapfigure.cpp
|
|
|
|
drawmapfiguretablemodel.cpp
|
|
|
|
figuredelegate.cpp
|
|
|
|
minetestmapperexe.cpp
|
|
|
|
colorstxtwizard.cpp
|
2019-03-21 19:24:03 -07:00
|
|
|
translator.cpp
|
2019-03-15 08:56:28 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
set(HEADERS
|
|
|
|
mainwindow.h
|
|
|
|
colorlineedit.h
|
|
|
|
geometry.h
|
|
|
|
geometrywidget.h
|
|
|
|
configdialog.h
|
|
|
|
makecolors.h
|
|
|
|
drawmapfigure.h
|
|
|
|
drawmapfiguretablemodel.h
|
|
|
|
figuredelegate.h
|
|
|
|
minetestmapperexe.h
|
|
|
|
colorstxtwizard.h
|
2019-03-21 19:24:03 -07:00
|
|
|
translator.h
|
2019-03-15 08:56:28 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
set(FORMS
|
|
|
|
mainwindow.ui
|
|
|
|
geometrywidget.ui
|
|
|
|
configdialog.ui
|
|
|
|
)
|
|
|
|
|
|
|
|
set(RESOURCES
|
|
|
|
minetestmappergui.qrc
|
|
|
|
)
|
|
|
|
|
|
|
|
set(TRANSLATIONS
|
|
|
|
translations/gui_de.ts
|
|
|
|
translations/gui_en.ts
|
|
|
|
)
|
|
|
|
|
|
|
|
if(${git_commits_since_last_tag} EQUAL 0)
|
|
|
|
set (PRERELEASE 0)
|
|
|
|
else()
|
|
|
|
set (PRERELEASE 1)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(BUILD_BRANCH ${git_current_branch})
|
|
|
|
if(BUILD_BRANCH STREQUAL "master")
|
|
|
|
set (SPECIALBUILD 0)
|
|
|
|
else()
|
|
|
|
set (SPECIALBUILD 1)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(CMAKE_AUTOMOC ON)
|
|
|
|
set(CMAKE_AUTOUIC ON)
|
|
|
|
set(CMAKE_AUTORCC ON)
|
|
|
|
|
|
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
|
|
|
|
configure_file(MinetestMapperGui.in.rc MinetestMapperGui.rc)
|
|
|
|
|
|
|
|
source_group("UI Files" FILES ${FORMS})
|
|
|
|
find_package(Qt5LinguistTools REQUIRED)
|
2019-03-23 00:48:54 -07:00
|
|
|
set_source_files_properties(${TRANSLATIONS} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/translations/")
|
2019-03-15 08:56:28 -07:00
|
|
|
qt5_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${TRANSLATIONS})
|
|
|
|
add_executable(MinetestMapperGUI ${SOURCES} ${HEADERS} ${FORMS} ${RESOURCES} ${QM_FILES} ${CMAKE_CURRENT_BINARY_DIR}/MinetestMapperGui.rc)
|
|
|
|
|
|
|
|
find_package(Qt5 COMPONENTS Core Gui Widgets)
|
|
|
|
|
|
|
|
target_link_libraries(MinetestMapperGUI Qt5::Core Qt5::Gui Qt5::Widgets)
|
|
|
|
if(WIN32)
|
|
|
|
find_package(Qt5WinExtras CONFIG REQUIRED)
|
|
|
|
target_link_libraries(MinetestMapperGUI Qt5::WinExtras)
|
|
|
|
# Get rid of the console window
|
|
|
|
set_target_properties(MinetestMapperGUI PROPERTIES WIN32_EXECUTABLE TRUE)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
target_compile_definitions(MinetestMapperGUI PRIVATE GIT_VERSION="${PROJECT_VERSION}")
|
|
|
|
|
2019-03-24 00:30:40 -07:00
|
|
|
if(BUILD_PORTABLE)
|
|
|
|
target_compile_definitions(MinetestMapperGUI PRIVATE PORTABLE)
|
|
|
|
endif(BUILD_PORTABLE)
|
|
|
|
|
2019-03-15 08:56:28 -07:00
|
|
|
if(WIN32)
|
|
|
|
# Get the location of the qmake exe
|
|
|
|
get_target_property(qmake_executable Qt5::qmake IMPORTED_LOCATION)
|
|
|
|
# Get the dir of it
|
|
|
|
get_filename_component(qt_bin_dir "${qmake_executable}" DIRECTORY)
|
|
|
|
message(STATUS "qt_bin_dir: ${qt_bin_dir}")
|
|
|
|
find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${qt_bin_dir}")
|
|
|
|
message(STATUS "WINDEPLOYQT_EXECUTABLE: ${WINDEPLOYQT_EXECUTABLE}")
|
|
|
|
add_custom_command(TARGET MinetestMapperGUI POST_BUILD
|
|
|
|
COMMAND ${WINDEPLOYQT_EXECUTABLE} $<TARGET_FILE:MinetestMapperGUI>
|
|
|
|
--dir "${CMAKE_CURRENT_BINARY_DIR}"
|
|
|
|
--libdir $<TARGET_FILE_DIR:MinetestMapperGUI>
|
|
|
|
--plugindir $<TARGET_FILE_DIR:MinetestMapperGUI>
|
|
|
|
--no-compiler-runtime
|
|
|
|
--no-opengl-sw
|
|
|
|
--no-angle
|
|
|
|
WORKING_DIRECTORY ${qt_bin_dir}
|
|
|
|
COMMENT "Running windeployqt..."
|
|
|
|
)
|
|
|
|
|
|
|
|
configure_file(mtmapperenv.bat mtmapperenv.bat COPYONLY)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Installation
|
|
|
|
###############################################################################
|
|
|
|
|
2019-03-23 21:44:02 -07:00
|
|
|
set(INSTALL_RUNTIME_DIR "bin")
|
|
|
|
if(WIN32)
|
|
|
|
set(INSTALL_RUNTIME_DIR ".")
|
|
|
|
endif()
|
|
|
|
|
2019-03-30 02:00:03 -07:00
|
|
|
if(UNIX)
|
|
|
|
set(ICON_DIR "/usr/local/share/icons/hicolor/scalable/apps")
|
|
|
|
if(BUILD_PORTABLE)
|
|
|
|
set(ICON_DIR ".")
|
|
|
|
endif()
|
|
|
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/MinetestMapperGui.in.desktop" "${CMAKE_CURRENT_BINARY_DIR}/MinetestMapperGui.desktop")
|
|
|
|
endif()
|
2019-03-23 21:44:02 -07:00
|
|
|
|
|
|
|
set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION ${INSTALL_RUNTIME_DIR})
|
2019-03-17 07:25:07 -07:00
|
|
|
include(InstallRequiredSystemLibraries)
|
2019-03-15 08:56:28 -07:00
|
|
|
|
2019-03-17 07:25:07 -07:00
|
|
|
#set(CPACK_PACKAGE_EXECUTABLES MinetestMapperGUI "Minetest Mapper GUI")
|
2019-03-15 08:56:28 -07:00
|
|
|
|
2019-03-17 07:25:07 -07:00
|
|
|
install(TARGETS MinetestMapperGUI
|
2019-03-23 21:44:02 -07:00
|
|
|
RUNTIME DESTINATION ${INSTALL_RUNTIME_DIR}
|
2019-03-15 08:56:28 -07:00
|
|
|
LIBRARY DESTINATION lib
|
|
|
|
ARCHIVE DESTINATION lib
|
|
|
|
)
|
|
|
|
|
|
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/translations/
|
|
|
|
DESTINATION "translations"
|
|
|
|
FILES_MATCHING PATTERN "*.qm"
|
|
|
|
)
|
|
|
|
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/translations/
|
|
|
|
DESTINATION "translations"
|
|
|
|
FILES_MATCHING PATTERN "*.png"
|
|
|
|
)
|
|
|
|
|
|
|
|
if(WIN32)
|
|
|
|
#copy required dlls to install dir
|
|
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Release/
|
2019-03-23 21:44:02 -07:00
|
|
|
DESTINATION ${INSTALL_RUNTIME_DIR}
|
2019-03-15 08:56:28 -07:00
|
|
|
CONFIGURATIONS Release
|
|
|
|
FILES_MATCHING PATTERN "*.dll")
|
|
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Debug/
|
2019-03-23 21:44:02 -07:00
|
|
|
DESTINATION ${INSTALL_RUNTIME_DIR}
|
2019-03-15 08:56:28 -07:00
|
|
|
CONFIGURATIONS Debug
|
|
|
|
FILES_MATCHING PATTERN "*.dll")
|
|
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/
|
2019-03-23 21:44:02 -07:00
|
|
|
DESTINATION ${INSTALL_RUNTIME_DIR}
|
2019-03-15 08:56:28 -07:00
|
|
|
CONFIGURATIONS RelWithDebInfo
|
|
|
|
FILES_MATCHING PATTERN "*.dll")
|
|
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/MinSizeRel/
|
2019-03-23 21:44:02 -07:00
|
|
|
DESTINATION ${INSTALL_RUNTIME_DIR}
|
2019-03-15 08:56:28 -07:00
|
|
|
CONFIGURATIONS RelWithDebInfo
|
|
|
|
FILES_MATCHING PATTERN "*.dll")
|
2019-03-23 19:21:51 -07:00
|
|
|
elseif(UNIX)
|
2019-03-30 02:00:03 -07:00
|
|
|
if(BUILD_PORTABLE)
|
|
|
|
# .desktop files does not support relative paths.
|
|
|
|
else()
|
|
|
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/icon.svg" DESTINATION "${ICON_DIR}" RENAME "${PROJECT_NAME}.svg")
|
|
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/MinetestMapperGui.desktop" DESTINATION "/usr/share/applications")
|
|
|
|
endif()
|
2019-03-23 19:21:51 -07:00
|
|
|
endif()
|
2019-03-15 08:56:28 -07:00
|
|
|
|
2019-03-17 07:25:07 -07:00
|
|
|
include(CPack)
|