Building Pointcaster

Source code for Pointcaster is available on Github. Start by cloning the repository:

git clone https://github.com/eidetic-av/pointcaster.git
cd pointcaster

Linux

Builds on Linux use a containerised environment created using the Dockerfile in the root of the repository. This handles download and configuration of all dependencies. Either Docker or Podman must be installed and configured on your system to proceed.

The Pointcaster AppImage can be built from the repository root like so:

docker build -t pointcaster-linux .
docker run --rm -it -v ./:/pointcaster:Z -w /pointcaster pointcaster-linux ./scripts/build-linux-release.sh

The docker run command arguments ensure that the repository is mounted inside the container and set as the working directory.

For a development shell, invoke bash or fish, where you can configure and build using cmake:

docker run --rm -it -v ./:/pointcaster:Z -w/pointcaster pointcaster-linux bash

Then from inside:

cmake --preset linux-release
cmake --build build/linux-release
cmake --build build/linux-release --target install
cmake --build build/linux-release --target package

The install target places a portable build at build/linux-release/install/bin/pointcaster, and the package target creates an AppImage at build/linux-release/Pointcaster-Linux-<version>.AppImage, both of which can be run from outside the container.

Tip

The docker image is used as a base for a Development Container in IDEs that support it. Visual Studio Code will automatically install extensions needed for C++, CMake and QML. See the devcontainer.json.

Windows

Official Windows builds use the Docker engine.

Note

Because of the nature of Docker on Windows, this isn't so great to use for development.

  • Enable Hyper-V & Containers Windows Features
  • Install docker desktop
  • Switching docker engine:
& "$Env:ProgramFiles\Docker\Docker\DockerCli.exe" -SwitchDaemon

build:

docker build -f Dockerfile.win -t pointcaster-win .

For a development shell:

docker run --rm -it -v ./:C:\pointcaster -w/pointcaster pointcaster-win powershell
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9