From b3cf236b34c386a9cbff81ffc1631554bd60ee1b Mon Sep 17 00:00:00 2001 From: Bart Ribbers Date: Fri, 23 Apr 2021 15:53:36 +0200 Subject: Port to CMake Qt is slowly deprecating QMake. They have stopped building Qt itself with QMake and moved Qt6 to CMake instead. Although QMake is still around, it's clear the focus has shifted and it would be good for applications to switch over to an alternative build system as well So hereby, switch the build system to CMake --- .gitignore | 1 + CMakeLists.txt | 25 +++++++++ asteroid-compass.pro | 13 ----- compass.svg | 109 ---------------------------------------- i18n/asteroid-compass.desktop.h | 3 +- i18n/generate-desktop.sh | 61 ---------------------- main.cpp | 23 --------- main.qml | 58 --------------------- resources.qrc | 6 --- src/CMakeLists.txt | 8 +++ src/compass.svg | 109 ++++++++++++++++++++++++++++++++++++++++ src/main.cpp | 23 +++++++++ src/main.qml | 58 +++++++++++++++++++++ src/resources.qrc | 6 +++ 14 files changed, 232 insertions(+), 271 deletions(-) create mode 100644 .gitignore create mode 100644 CMakeLists.txt delete mode 100644 asteroid-compass.pro delete mode 100644 compass.svg delete mode 100755 i18n/generate-desktop.sh delete mode 100644 main.cpp delete mode 100644 main.qml delete mode 100644 resources.qrc create mode 100644 src/CMakeLists.txt create mode 100644 src/compass.svg create mode 100644 src/main.cpp create mode 100644 src/main.qml create mode 100644 src/resources.qrc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..378eac2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..8a682c7 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.6.0) + +project(asteroid-compass + VERSION 0.0.1 + DESCRIPTION "Default compass app for AsteroidOS") + +find_package(ECM REQUIRED NO_MODULE) +find_package(AsteroidApp REQUIRED) + +set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ASTEROID_MODULE_PATH}) + +include(FeatureSummary) +include(GNUInstallDirs) +include(ECMQMLModules) +include(AsteroidCMakeSettings) +include(AsteroidTranslations) + +ecm_find_qmlmodule(QtSensors 5.3) + +add_subdirectory(src) + +build_translations(i18n) +generate_desktop(${CMAKE_SOURCE_DIR} asteroid-compass) + +feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/asteroid-compass.pro b/asteroid-compass.pro deleted file mode 100644 index 9d28d0f..0000000 --- a/asteroid-compass.pro +++ /dev/null @@ -1,13 +0,0 @@ -TARGET = asteroid-compass -CONFIG += asteroidapp link_pkgconfig -PKGCONFIG += asteroidapp - -SOURCES += main.cpp -RESOURCES += resources.qrc -OTHER_FILES += main.qml - -lupdate_only{ SOURCES = i18n/$$TARGET.desktop.h } -TRANSLATIONS = $$files(i18n/$$TARGET.*.ts) - -target.path = /usr/bin/ -INSTALLS += target diff --git a/compass.svg b/compass.svg deleted file mode 100644 index 95d62a1..0000000 --- a/compass.svg +++ /dev/null @@ -1,109 +0,0 @@ - - - -image/svg+xmlN -S - \ No newline at end of file diff --git a/i18n/asteroid-compass.desktop.h b/i18n/asteroid-compass.desktop.h index ec23110..076160c 100644 --- a/i18n/asteroid-compass.desktop.h +++ b/i18n/asteroid-compass.desktop.h @@ -2,4 +2,5 @@ * will be integrated to i18n/.ts files, translated on Weblate and then merged * back with the .desktop.template file into a single .desktop file. */ -QObject::tr("Compass"); +//% "Compass" +qtTrId("id-app-launcher-name"); diff --git a/i18n/generate-desktop.sh b/i18n/generate-desktop.sh deleted file mode 100755 index f4c8a3e..0000000 --- a/i18n/generate-desktop.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash - -# This script is used to extract the translated app names found inevery .ts file -# and gather those strings with the .desktop.template file in a single .desktop - -if [ "$#" -ne 2 ]; then - echo "usage: $0 src_directory output.desktop" - exit 1 -fi - -SRC_DIR=$1 -OUTPUT_DESKTOP_FILE=$2 -if [ ! -f "${SRC_DIR}/${OUTPUT_DESKTOP_FILE}.template" ]; then - echo "${SRC_DIR}/${OUTPUT_DESKTOP_FILE}.template not found" - exit 2 -fi -if [ ! -f "${SRC_DIR}/i18n/${OUTPUT_DESKTOP_FILE}.h" ]; then - echo "${SRC_DIR}/i18n/${OUTPUT_DESKTOP_FILE}.h not found" - exit 2 -fi - -DEFAULT_NAME=`grep -oP 'QObject::tr\("\K[^"]+(?="\);)' ${SRC_DIR}/i18n/${OUTPUT_DESKTOP_FILE}.h` -if [ -z "$DEFAULT_NAME" ]; then - echo "Default name can not be found in ${SRC_DIR}/i18n/${OUTPUT_DESKTOP_FILE}.h" - exit 3 -fi - -cat ${SRC_DIR}/${OUTPUT_DESKTOP_FILE}.template > ${OUTPUT_DESKTOP_FILE} -echo "Name=$DEFAULT_NAME" >> $OUTPUT_DESKTOP_FILE - -for FILE in ${SRC_DIR}/i18n/*.ts; do - echo "Processing $FILE..." - - PROCESSED_LANG=`grep -oP 'language="\K[^"]+(?=")' $FILE` - if [ -z "$PROCESSED_LANG" ]; then - echo "> Couldn't find a corresponding language id, aborting" - continue - fi - echo "> Language: $PROCESSED_LANG detected" - - TRANSLATION_LINE=`grep -A 2 ' Couldn't find a corresponding desktop.h translation, aborting" - continue - fi - - LINE_IS_UNFINISHED=`echo $TRANSLATION_LINE | grep unfinished` - if [ ! -z "$LINE_IS_UNFINISHED" ]; then - echo "> Translation line has been found but is marked as unfinished, aborting" - continue - fi - - TRANSLATED_NAME=`echo $TRANSLATION_LINE | grep -oP '>\K[^<]*(?=)'` - if [ -z "$TRANSLATED_NAME" ]; then - echo "> Translation is empty, aborting" - continue - fi - echo "> Translation '$TRANSLATED_NAME' found, filling $OUTPUT_DESKTOP_FILE" - - echo "Name[$PROCESSED_LANG]=$TRANSLATED_NAME" >> $OUTPUT_DESKTOP_FILE -done diff --git a/main.cpp b/main.cpp deleted file mode 100644 index a44544c..0000000 --- a/main.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 2017 - Florent Revest - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include - -int main(int argc, char *argv[]) -{ - return AsteroidApp::main(argc, argv); -} diff --git a/main.qml b/main.qml deleted file mode 100644 index f6c171c..0000000 --- a/main.qml +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2017 - Florent Revest - * - Niels Tholenaar - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -import QtQuick 2.5 -import org.asteroid.controls 1.0 -import QtSensors 5.3 - -Application { - id: app - - centerColor: "#4cd479" - outerColor: "#1c723a" - - property int rotation: 0; - property int calibration: 0; - - Compass { - active: true - onReadingChanged: { - app.rotation = reading.azimuth; - app.calibration = reading.calibrationLevel; - } - } - - Image { - anchors.fill: parent - anchors.margins: Dims.l(15) - fillMode: Image.PreserveAspectFit - source: "qrc:///compass.svg" - rotation: -app.rotation - height: 200; - sourceSize.width: width - sourceSize.height: height - } - - Label { - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottom: parent.bottom - anchors.bottomMargin: Dims.l(7) - font.pixelSize: Dims.l(5) - text: app.rotation + " °N Calibrated: " + app.calibration - } -} diff --git a/resources.qrc b/resources.qrc deleted file mode 100644 index acd1a74..0000000 --- a/resources.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - main.qml - compass.svg - - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..a9ef740 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,8 @@ +add_library(asteroid-compass main.cpp resources.qrc) +set_target_properties(asteroid-compass PROPERTIES PREFIX "" SUFFIX "") + +target_link_libraries(asteroid-compass PUBLIC + AsteroidApp) + +install(TARGETS asteroid-compass + DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/src/compass.svg b/src/compass.svg new file mode 100644 index 0000000..95d62a1 --- /dev/null +++ b/src/compass.svg @@ -0,0 +1,109 @@ + + + +image/svg+xmlN +S + \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..a44544c --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2017 - Florent Revest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include + +int main(int argc, char *argv[]) +{ + return AsteroidApp::main(argc, argv); +} diff --git a/src/main.qml b/src/main.qml new file mode 100644 index 0000000..f6c171c --- /dev/null +++ b/src/main.qml @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2017 - Florent Revest + * - Niels Tholenaar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +import QtQuick 2.5 +import org.asteroid.controls 1.0 +import QtSensors 5.3 + +Application { + id: app + + centerColor: "#4cd479" + outerColor: "#1c723a" + + property int rotation: 0; + property int calibration: 0; + + Compass { + active: true + onReadingChanged: { + app.rotation = reading.azimuth; + app.calibration = reading.calibrationLevel; + } + } + + Image { + anchors.fill: parent + anchors.margins: Dims.l(15) + fillMode: Image.PreserveAspectFit + source: "qrc:///compass.svg" + rotation: -app.rotation + height: 200; + sourceSize.width: width + sourceSize.height: height + } + + Label { + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.bottomMargin: Dims.l(7) + font.pixelSize: Dims.l(5) + text: app.rotation + " °N Calibrated: " + app.calibration + } +} diff --git a/src/resources.qrc b/src/resources.qrc new file mode 100644 index 0000000..acd1a74 --- /dev/null +++ b/src/resources.qrc @@ -0,0 +1,6 @@ + + + main.qml + compass.svg + + -- cgit v1.2.3-54-g00ecf