114 lines
3.6 KiB
Markdown
114 lines
3.6 KiB
Markdown
# nymea-app
|
|
|
|
QtQuick nymea client application
|
|
|
|
# building
|
|
|
|
Required packages:
|
|
It is recommended to install a complete Qt installation. Minimum required Qt version is Qt 6.
|
|
|
|
No extra modules are required for a basic desktop build.
|
|
|
|
After cloning the repository, run
|
|
|
|
$ git submodule init
|
|
$ git submodule update
|
|
|
|
To build a binary with CMake run
|
|
|
|
$ cmake -S . -B build
|
|
$ cmake --build build
|
|
|
|
The build can be customised with the following cache variables:
|
|
|
|
- `-DNYMEA_ENABLE_ZEROCONF=ON` enables ZeroConf support when the QtZeroConf and
|
|
Avahi dependencies are available.
|
|
- `-DNYMEA_USE_MATERIAL_ICONS=ON` switches the icon theme to the Material icon set.
|
|
|
|
Legacy qmake builds are still available by opening `nymea-app.pro` in QtCreator
|
|
and building the project there.
|
|
|
|
Optional configuration flags to be passed to qmake:
|
|
|
|
- `CONFIG+=withtests`
|
|
|
|
> Enables building the testrunner target
|
|
|
|
## Android
|
|
When targeting Android, the build will download the KDAB
|
|
[`android_openssl`](https://github.com/KDAB/android_openssl) package at
|
|
configure time and automatically bundle the provided `libssl` and `libcrypto`
|
|
shared libraries inside the APK. An active internet connection is therefore
|
|
required the first time you configure an Android build directory. Other
|
|
platforms will build without explicitly linking to OpenSSL if the development
|
|
package is not installed.
|
|
|
|
## Windows
|
|
|
|
There is an additional make target named "wininstaller" available. You need to
|
|
have windeployqt and binarycreator (from Qt Install Framework 3.0) in your
|
|
system's Path.
|
|
|
|
# Running the tests
|
|
|
|
Required Packages:
|
|
|
|
- `qtdeclarative5-test-plugin`
|
|
- `nymead`
|
|
|
|
# Custom styles and branding:
|
|
|
|
## Overriding styles available in the app
|
|
|
|
nymea-app can be built with custom styles by passing STYLES_PATH to qmake.
|
|
Example:
|
|
$ qmake STYLES_PATH=/home/user/my-styles/
|
|
|
|
The path must point to a directory containing the following file structure:
|
|
|
|
- styles.qrc
|
|
- styles/<stylename>/logo.svg
|
|
|
|
styles.qrc should be a Qt qrc file listing all the files inside styles/
|
|
providing an logo.svg is the minimum required for a style. In addition to
|
|
that, any QtQuick.Controls 2 component can be override. See the styles/
|
|
directory in this repository fo examples.
|
|
|
|
|
|
## Branding
|
|
|
|
In addition to overriding the available app styles, the app can be branded.
|
|
That means, the style selection will be hidden and the app is locked down to
|
|
the style given by the BRANDING argument passed to qmake.
|
|
|
|
Example locking down the app to the "dark" style:
|
|
$ qmake BRANDING=dark
|
|
|
|
Brandings will also affect the installer packages. If you use branding in combination
|
|
with style overrides, you also need to provide a installer package in
|
|
packages/<platform>_<branding> in your styles directory. See the packaging directory
|
|
in this repository for examples for isntaller packages.
|
|
|
|
Example:
|
|
$ qmake STYLES_PATH="C:\path\to\my\styles" BRANDING=mycoolstyle
|
|
|
|
This would the following minimum files in C:\path\to\my\styles\ :
|
|
- styles.qrc
|
|
- styles\mycoolstyle\logo.svg
|
|
- packaging\windows_mycoolstyle\
|
|
|
|
## License
|
|
|
|
nymea-app is licensed under the terms of the GNU General Public License,
|
|
version 3 or (at your option) any later version (SPDX identifier:
|
|
GPL-3.0-or-later). Every `.cpp/.h/.qml` file in `nymea-app/` and
|
|
`experiences/` now carries the SPDX + GPL header that attributes both
|
|
nymea GmbH and chargebyte austria GmbH <contact@nymea.io>. The complete
|
|
GPL text is available in `LICENSE.GPL3`, with third-party notices kept in
|
|
`LICENSES/`.
|
|
|
|
libnymea-app is licensed under the GNU Lesser General Public License
|
|
version 3 (SPDX identifier: LGPL-3.0-or-later). The full LGPL v3 text can
|
|
be found in `LICENSE.LGPL3`, and the headers inside `libnymea-app/` have
|
|
been updated accordingly.
|