From 515cb9fe8437561409458d9a60f897282a721e01 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 5 Dec 2015 22:52:00 +0100 Subject: [PATCH] added simple CMake project file --- CMakeLists.txt | 69 +++++++++++++++++++++++++++++++++ config.h.in | 9 +++++ general.pri | 2 +- gui/initiatequi.cpp | 7 +++- gui/mainwindow.cpp | 2 +- gui/passwordgeneratordialog.cpp | 2 +- main.cpp | 5 +++ model/entrymodel.cpp | 2 +- model/fieldmodel.cpp | 2 +- passwordmanager.pro | 9 ++++- qml/main.qml | 15 +++---- quickgui/initiatequick.cpp | 7 +++- 12 files changed, 115 insertions(+), 16 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 config.h.in diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..d718ad7 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,69 @@ +cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) + +# meta data +set(META_PROJECT_NAME passwordmanager) +set(META_APP_NAME "Password Manager") +set(META_APP_AUTHOR "Martchus") +set(META_APP_URL "https://github.com/${META_APP_AUTHOR}/${META_PROJECT_NAME}") +set(META APP_DESCRIPTION "A simple password manager.") +set(META_VERSION_MAJOR 2) +set(META_VERSION_MINOR 0) +set(META_VERSION_PATCH 9) + +# define project +project(${META_PROJECT_NAME}) + +# stringification of meta data +set(META_PROJECT_NAME_STR "\"${META_PROJECT_NAME}\"") +set(META_APP_NAME_STR "\"${META_APP_NAME}\"") +set(META_APP_AUTHOR_STR "\"${META_APP_AUTHOR}\"") +set(META_APP_URL_STR "\"${META_APP_URL}\"") +set(APP_DESCRIPTION_STR "\"${APP_DESCRIPTION}\"") +set(META_APP_VERSION_STR "\"${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}\"") + +# add configuration header +configure_file ( + "${PROJECT_SOURCE_DIR}/config.h.in" + "${PROJECT_BINARY_DIR}/config.h" +) +include_directories("${PROJECT_BINARY_DIR}") + +# add source and header files +file(GLOB_RECURSE SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "main.cpp" "cli/*.cpp" "model/*.cpp") +file(GLOB_RECURSE WIDGETS_SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "gui/*.cpp" "resources/icons.qrc") +file(GLOB_RECURSE HEADER_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "cli/*.h" "model/*.h") +file(GLOB_RECURSE WIDGETS_HEADER_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "gui/*.h") + +# enable only Qt Widgets GUI +add_definitions(-DGUI_QTWIDGETS -DMODEL_UNDO_SUPPORT) + +# check required Qt 5 modules +find_package(Qt5Core REQUIRED) +find_package(Qt5Gui REQUIRED) +find_package(Qt5Widgets REQUIRED) + +# enable moc, uic and rcc +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +# executable and linking +add_executable(${META_PROJECT_NAME} ${HEADER_FILES} ${SRC_FILES} ${WIDGETS_HEADER_FILES} ${WIDGETS_SRC_FILES}) +target_link_libraries(${META_PROJECT_NAME} c++utilities qtutilities passwordfile Qt5::Core Qt5::Widgets) + +# enable C++11 +set_property(TARGET ${META_PROJECT_NAME} PROPERTY CXX_STANDARD 11) + +# add install target +install(TARGETS ${META_PROJECT_NAME} + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) +install(FILES resources/icons/hicolor/scalable/apps/${META_PROJECT_NAME}.svg + DESTINATION share/icons/hicolor/scalable/apps +) +install(FILES resources/desktop/applications/${META_PROJECT_NAME}.desktop + DESTINATION share/applications +) diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..2f9ca46 --- /dev/null +++ b/config.h.in @@ -0,0 +1,9 @@ +#ifndef APP_METADATA_AVAIL +#define APP_METADATA_AVAIL +#define PROJECT_NAME @META_PROJECT_NAME_STR@ +#define APP_NAME @META_APP_NAME_STR@ +#define APP_VERSION @META_APP_VERSION_STR@ +#define APP_AUTHOR @META_APP_AUTHOR_STR@ +#define APP_URL @META_APP_URL_STR@ +#define APP_DESCRIPTION @META_APP_DESCRIPTION_STR@ +#endif // APP_METADATA_AVAIL diff --git a/general.pri b/general.pri index 60bf445..6e654cd 100644 --- a/general.pri +++ b/general.pri @@ -1,5 +1,4 @@ #dirs -UI_DIR = ./gui MOC_DIR = ./moc OBJECTS_DIR = ./obj RCC_DIR = ./res @@ -18,6 +17,7 @@ CONFIG(debug, debug|release) { TARGET = $${targetprefix}$${projectname} } # add defines +DEFINES += "APP_METADATA_AVAIL" DEFINES += "'PROJECT_NAME=\"$${projectname}\"'" DEFINES += "'APP_NAME=\"$${appname}\"'" DEFINES += "'APP_AUTHOR=\"$${appauthor}\"'" diff --git a/gui/initiatequi.cpp b/gui/initiatequi.cpp index 4eca73b..7c32a31 100644 --- a/gui/initiatequi.cpp +++ b/gui/initiatequi.cpp @@ -1,6 +1,11 @@ #include "./initiategui.h" -#include "gui/mainwindow.h" +#include "./gui/mainwindow.h" + +// include configuration from separate header file when building with CMake +#ifndef APP_METADATA_AVAIL +#include "config.h" +#endif #include #include diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index d16f97d..f10e709 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -5,7 +5,7 @@ #include "../model/entrymodel.h" #include "../model/entryfiltermodel.h" -#include "gui/ui_mainwindow.h" +#include "ui_mainwindow.h" #include #include diff --git a/gui/passwordgeneratordialog.cpp b/gui/passwordgeneratordialog.cpp index c39d7f9..ad20de9 100644 --- a/gui/passwordgeneratordialog.cpp +++ b/gui/passwordgeneratordialog.cpp @@ -1,6 +1,6 @@ #include "./passwordgeneratordialog.h" -#include "gui/ui_passwordgeneratordialog.h" +#include "ui_passwordgeneratordialog.h" #include diff --git a/main.cpp b/main.cpp index 449af36..1a1f3bf 100644 --- a/main.cpp +++ b/main.cpp @@ -6,6 +6,11 @@ # include "./quickgui/initiatequick.h" #endif +// include configuration from separate header file when building with CMake +#ifndef APP_METADATA_AVAIL +#include "config.h" +#endif + #include #include diff --git a/model/entrymodel.cpp b/model/entrymodel.cpp index f7f7aa0..5a391e9 100644 --- a/model/entrymodel.cpp +++ b/model/entrymodel.cpp @@ -1,7 +1,7 @@ #include "./entrymodel.h" #ifdef MODEL_UNDO_SUPPORT -#include "gui/undocommands.h" +#include "./gui/undocommands.h" #endif #include diff --git a/model/fieldmodel.cpp b/model/fieldmodel.cpp index 20ba121..48356db 100644 --- a/model/fieldmodel.cpp +++ b/model/fieldmodel.cpp @@ -1,6 +1,6 @@ #include "./fieldmodel.h" #ifdef MODEL_UNDO_SUPPORT -#include "gui/undocommands.h" +#include "./gui/undocommands.h" #endif #include diff --git a/passwordmanager.pro b/passwordmanager.pro index 042ae43..adfef3d 100644 --- a/passwordmanager.pro +++ b/passwordmanager.pro @@ -33,9 +33,11 @@ SOURCES += main.cpp\ model/entrymodel.cpp \ model/fieldmodel.cpp \ model/entryfiltermodel.cpp \ - util/testroutines.cpp \ cli/cli.cpp +testing { + SOURCES += util/testroutines.cpp +} guiqtwidgets { SOURCES += gui/mainwindow.cpp \ @@ -57,9 +59,12 @@ guiqtquick { HEADERS += model/entrymodel.h \ model/fieldmodel.h \ model/entryfiltermodel.h \ - util/testroutines.h \ cli/cli.h +testing { + HEADERS += util/testroutines.h +} + guiqtwidgets { HEADERS += gui/mainwindow.h \ gui/passwordgeneratordialog.h \ diff --git a/qml/main.qml b/qml/main.qml index ff7197e..17f9a05 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -63,8 +63,7 @@ ApplicationWindow { initialItem: startPage delegate: StackViewDelegate { pushTransition: StackViewTransition { - function transitionFinished(properties) - { + function transitionFinished(properties) { properties.exitItem.opacity = 1 } PropertyAnimation { @@ -138,7 +137,7 @@ ApplicationWindow { } Touch.TouchLabel { id: label - y: 32 * ApplicationInfo.ratio - height/2 + y: 32 * ApplicationInfo.ratio - height / 2 width: parent.width // The text will only wrap if an explicit width has been set text: statusBarMessage textFormat: Text.RichText @@ -150,14 +149,16 @@ ApplicationWindow { verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter function decreaseFontSizeOnNarrowScreen() { - if (label.implicitHeight > statusbar.statusBarHeight) - pixelSize = Math.floor(pixelSize * statusbar.statusBarHeight/label.implicitHeight) + if (label.implicitHeight > statusbar.statusBarHeight) { + pixelSize = Math.floor(pixelSize * statusbar.statusBarHeight / label.implicitHeight) + } } onTextChanged: { - if (text === "") + if (text === "") { pixelSize = 18 - else + } else { decreaseFontSizeOnNarrowScreen() + } } onWidthChanged: decreaseFontSizeOnNarrowScreen() } diff --git a/quickgui/initiatequick.cpp b/quickgui/initiatequick.cpp index d9cbdbe..b69797c 100644 --- a/quickgui/initiatequick.cpp +++ b/quickgui/initiatequick.cpp @@ -1,10 +1,15 @@ #include "./initiatequick.h" +#include "./applicationinfo.h" # include "../model/entryfiltermodel.h" # include "../model/entrymodel.h" # include "../model/fieldmodel.h" -#include "quickgui/applicationinfo.h" +// include configuration from separate header file when building with CMake +#ifndef APP_METADATA_AVAIL +#include "config.h" +#endif + #include #include