lqml/examples/meshtastic/readme-build.md

3.7 KiB

Special requirements

This example requires both ECL 23.9.9 plus the hack described in hacks.

See also notes in my-cl-protobufs.asd.

For android please see qt-location-hack.

For Windows you need to include the OpenSSL libs for the map to work (tile download). If you used the Qt online installer (recommended), just run the Qt maintainance tool and select the OpenSSL libs, and include both libssl-1_1-x64.dll and libcrypto-1_1-x64.dll in your installation folder.

Prepare

If you use Qt versions prior to 5.15, you need to adapt the QML module version to your minor Qt version in all files under qml/.

Example: Qt5.12 => import QtQuick 2.12.

The version number can be omitted in Qt6.

Note

Every Lisp file under lisp/ and every qml/image/font/whatever file under qml/ is added automatically to your Qt project file (both for re-compile and adding to resources included in the executable).

So, you only need to manually care about the usual ASDF project files in app.asd.

But -- of course -- you still need to run the respective qmake command every time you add new files to the project, because the automation is all defined in app.pro.

Run desktop

$ lqml run.lisp

Build desktop app

$ cd build

$ qmake ..
$ make

Build android APK

  • build background service:
$ cd cpp/android_service
$ qmake-android
$ make
$ cd ../..
  • build apk:
$ cd build-android

$ qmake-android ..
$ make apk

$ ./install-run.sh

Log note: for showing only your own messages, see log.sh.

Build iOS app

Important notes: the Qt Xcode integration is not perfect, which means: when you include asset files (like in example swank-server), they may not be copied to the build directory, the first time you build the app.

So, it's a good idea to run qmake-ios again if there are any startup problems of the app (like asset files not found when launching).

The first build after a qmake-ios will almost always fail (missing build files): don't worry, just run 'Build' (from Xcode) again, and the missing files will be created.

You also need to check the console from where you launched ./xcode.sh for eventual errors compiling the Lisp code.

$ cd build-ios

$ qmake-ios ..

$ ./xcode.sh

The script above first cross-compiles the Lisp code, then opens Xcode.

Please note (important):

  • before building the app, go to 'Build Settings' / 'Build Options' and set Enable Bitcode to No

  • if it complains about missing source files when first hitting the 'Run' button, just hit the 'Run' button again (and they will be generated)

  • using latest Xcode, it may complain about the 'Legacy Build System'; just go to 'File' / 'Project Settings' and select 'New Build System'

  • you only need to run qmake-ios again after you added/removed files to the project; after every qmake-ios, the above steps need to be repeated

If you cross-compiled ECL for the simulator, it should work there too, but this is currently only tested on Intel.

Simulator note: to show the virtual keyboard, use cmd-k.

Notes

You will note that sometimes a change of a single Lisp file won't recompile that file on the next make; in those cases, just do something like touch ../app.asd to force recompilation of everything.

For conditions during Qt event processing, a fallback restart is added at startup (needed in e.g. Slime).

If you don't want this, define the following in app.pro:

DEFINES += NO_QT_RESTART

Translations (i18n)

Please see i18n/readme.