Add CMake buildsystem
parent
1ac4fed264
commit
a2277a972d
|
@ -0,0 +1,171 @@
|
|||
cmake_minimum_required(VERSION 3.12)
|
||||
|
||||
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)
|
||||
|
||||
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
|
||||
)
|
||||
|
||||
set(HEADERS
|
||||
mainwindow.h
|
||||
colorlineedit.h
|
||||
geometry.h
|
||||
geometrywidget.h
|
||||
configdialog.h
|
||||
makecolors.h
|
||||
drawmapfigure.h
|
||||
drawmapfiguretablemodel.h
|
||||
figuredelegate.h
|
||||
minetestmapperexe.h
|
||||
colorstxtwizard.h
|
||||
)
|
||||
|
||||
set(FORMS
|
||||
mainwindow.ui
|
||||
geometrywidget.ui
|
||||
configdialog.ui
|
||||
)
|
||||
|
||||
set(RESOURCES
|
||||
minetestmappergui.qrc
|
||||
)
|
||||
|
||||
set(TRANSLATIONS
|
||||
translations/gui_de.ts
|
||||
translations/gui_en.ts
|
||||
)
|
||||
|
||||
include(getGitVersion)
|
||||
|
||||
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)
|
||||
set_source_files_properties(${TRANSLATIONS} PROPERTIES OUTPUT_LOCATION "translations/")
|
||||
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}")
|
||||
|
||||
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
|
||||
###############################################################################
|
||||
|
||||
set (CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION ".")
|
||||
include (InstallRequiredSystemLibraries)
|
||||
|
||||
|
||||
INSTALL(TARGETS MinetestMapperGUI
|
||||
RUNTIME DESTINATION .
|
||||
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/
|
||||
DESTINATION .
|
||||
CONFIGURATIONS Release
|
||||
FILES_MATCHING PATTERN "*.dll")
|
||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Debug/
|
||||
DESTINATION .
|
||||
CONFIGURATIONS Debug
|
||||
FILES_MATCHING PATTERN "*.dll")
|
||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/
|
||||
DESTINATION .
|
||||
CONFIGURATIONS RelWithDebInfo
|
||||
FILES_MATCHING PATTERN "*.dll")
|
||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/MinSizeRel/
|
||||
DESTINATION .
|
||||
CONFIGURATIONS RelWithDebInfo
|
||||
FILES_MATCHING PATTERN "*.dll")
|
||||
endif(WIN32)
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
#include <windows.h>
|
||||
|
||||
IDI_ICON1 ICON DISCARDABLE "${CMAKE_CURRENT_SOURCE_DIR}/images/icon.ico"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION ${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},${PROJECT_VERSION_PATCH},${PROJECT_VERSION_TWEAK}
|
||||
PRODUCTVERSION ${CMAKE_PROJECT_VERSION_MAJOR},${CMAKE_PROJECT_VERSION_MINOR},${CMAKE_PROJECT_VERSION_PATCH},${CMAKE_PROJECT_VERSION_TWEAK}
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS VS_FF_DEBUG
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS VOS__WINDOWS32
|
||||
FILETYPE VFT_APP
|
||||
FILESUBTYPE VFT2_UNKNOWN
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "04b004b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "\0"
|
||||
VALUE "FileDescription", "${PROJECT_DESCRIPTION}\0"
|
||||
VALUE "FileVersion", "${PROJECT_VERSION}\0"
|
||||
VALUE "LegalCopyright", "2015-2019 addi; CC BY\0"
|
||||
VALUE "OriginalFilename", "{PROJECT_NAME}.exe\0"
|
||||
VALUE "ProductName", "${PROJECT_NAME}\0"
|
||||
VALUE "ProductVersion", "${CMAKE_PROJECT_VERSION}\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x04b0, 1200
|
||||
END
|
||||
END
|
||||
/* End of Version info */
|
||||
|
|
@ -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()
|
Loading…
Reference in New Issue