Blame

8f02a8 Matt Hughes 2026-10-11 19:32:20
1
# Development
432b0b Matt Hughes 2026-01-16 04:54:20
add build page
2
59dab0 Matt Hughes 2026-03-19 11:10:03
3
Source code for Pointcaster is available on [Github](https://github.com/matth-av/pointcaster). Start by cloning the repository:
8c8c1b Matt Hughes 2026-01-21 03:50:02
4
```sh
59dab0 Matt Hughes 2026-03-19 11:10:03
5
git clone https://github.com/matth-av/pointcaster.git
8c8c1b Matt Hughes 2026-01-21 03:50:02
6
cd pointcaster
7
```
63a237 Matt Hughes 2026-01-16 05:25:14
8
51fe60 Matt Hughes 2026-10-11 19:24:29
9
Builds use a containerised development environment that handles download and configuration of all dependencies. The [compose.yaml](https://github.com/matth-av/pointcaster/blob/qt/compose.yaml) in the root of the repository defines two services, `dev` for Linux and `dev-win` for Windows, which mount the repository inside the container and open a shell. Either [Docker](https://docs.docker.com/engine/install/) or [Podman](https://podman.io/docs/installation) (with `podman compose`) must be installed and configured on your system to proceed.
432b0b Matt Hughes 2026-01-16 04:54:20
add build page
10
51fe60 Matt Hughes 2026-10-11 19:24:29
11
## Linux
e6e300 Matt Hughes 2026-01-16 05:14:27
12
51fe60 Matt Hughes 2026-10-11 19:24:29
13
Start a development shell:
e6e300 Matt Hughes 2026-01-16 05:14:27
14
```sh
51fe60 Matt Hughes 2026-10-11 19:24:29
15
docker compose run --rm dev
4c17cd Matt Hughes 2026-08-20 01:11:05
16
```
51fe60 Matt Hughes 2026-10-11 19:24:29
17
Or with Podman:
4c17cd Matt Hughes 2026-08-20 01:11:05
18
```sh
51fe60 Matt Hughes 2026-10-11 19:24:29
19
podman compose run --rm dev
4c17cd Matt Hughes 2026-08-20 01:11:05
20
```
51fe60 Matt Hughes 2026-10-11 19:24:29
21
The container image is pulled from Pointcaster servers on first run. Or you can build it yourself from the [Dockerfile](https://github.com/matth-av/pointcaster/blob/qt/Dockerfile) (but it will take a while):
4c17cd Matt Hughes 2026-08-20 01:11:05
22
```sh
51fe60 Matt Hughes 2026-10-11 19:24:29
23
docker build -t cr.pointcaster.net/pointcaster-dev:latest-linux .
e6e300 Matt Hughes 2026-01-16 05:14:27
24
```
25
51fe60 Matt Hughes 2026-10-11 19:24:29
26
From inside the container, configure and build using `cmake`:
8c8c1b Matt Hughes 2026-01-21 03:50:02
27
```sh
77dd37 Matt Hughes 2026-01-21 03:38:38
28
cmake --preset linux-release
0e9a71 Matt Hughes 2026-07-19 10:12:59
29
cmake --build build/linux-release
41626d Matt Hughes 2026-07-19 13:53:34
30
cmake --build build/linux-release --target install
03f05d Matt Hughes 2026-07-19 13:52:36
31
cmake --build build/linux-release --target package
e6e300 Matt Hughes 2026-01-16 05:14:27
32
```
33
4e2df0 Matt Hughes 2026-08-20 01:32:52
34
The install target places a portable build at `build/linux-release/install/bin/pointcaster`, and the package target creates an AppImage at `dist/pointcaster-<version>-linux-release.AppImage`, both of which can be run from outside the container.
51fe60 Matt Hughes 2026-10-11 19:24:29
35
36
To produce a release package without opening a shell:
37
```sh
38
docker compose run --rm dev ./scripts/build-linux-release.sh
39
```
0e386a Matt Hughes 2026-01-21 03:40:30
40
> [!TIP]
51fe60 Matt Hughes 2026-10-11 19:24:29
41
> The same image is used as a base for a [Development Container](https://containers.dev/) in IDEs that support it. Visual Studio Code will automatically install extensions needed for C++, CMake and QML. See the [devcontainer.json](https://github.com/matth-av/pointcaster/blob/qt/.devcontainer/devcontainer.json).
77dd37 Matt Hughes 2026-01-21 03:38:38
42
432b0b Matt Hughes 2026-01-16 04:54:20
add build page
43
## Windows
bb906d Matt Hughes 2026-03-16 07:14:26
44
### Windows Builds Using Docker
51fe60 Matt Hughes 2026-10-11 19:24:29
45
Automated Windows builds use a Windows container with Visual Studio Build Tools and other binary dependencies installed by [`scripts/windows.Dockerfile`](https://github.com/matth-av/pointcaster/blob/qt/scripts/windows.Dockerfile). This is how release builds are produced, but if you are looking to develop Pointcaster or a Pointcaster plugin you'll most likely want to build and debug using an IDE - in which case you might prefer [installing dependencies manually](#windows-builds-in-an-ide).
964c07 Matt Hughes 2026-03-16 07:22:32
46
756ec8 Matt Hughes 2026-10-11 08:31:49
47
The `dev-win` service requires Docker running Windows containers. It uses process isolation, so the host must be able to run Windows Server 2022 based images (Windows 11, Windows Server 2022 or Windows Server 2025).
964c07 Matt Hughes 2026-03-16 07:22:32
48
51fe60 Matt Hughes 2026-10-11 19:24:29
49
Start a development shell:
b780d8 Matt Hughes 2026-08-20 01:28:36
50
```sh
51fe60 Matt Hughes 2026-10-11 19:24:29
51
docker compose run --rm dev-win
b780d8 Matt Hughes 2026-08-20 01:28:36
52
```
51fe60 Matt Hughes 2026-10-11 19:24:29
53
Or build the image yourself (but it will take a while):
9efa22 Matt Hughes 2026-03-17 10:03:35
54
```sh
51fe60 Matt Hughes 2026-10-11 19:24:29
55
docker build -f scripts/windows.Dockerfile -t cr.pointcaster.net/pointcaster-dev:latest-windows .
b28796 Matt Hughes 2026-03-16 07:35:44
56
```
b780d8 Matt Hughes 2026-08-20 01:28:36
57
9efa22 Matt Hughes 2026-03-17 10:03:35
58
And from inside the container:
59
```sh
572bbd Matt Hughes 2026-03-16 07:36:58
60
cmake --preset windows-release
0e9a71 Matt Hughes 2026-07-19 10:12:59
61
cmake --build build/windows-release
41626d Matt Hughes 2026-07-19 13:53:34
62
cmake --build build/windows-release --target install
03f05d Matt Hughes 2026-07-19 13:52:36
63
cmake --build build/windows-release --target package
365e08 Matt Hughes 2026-03-16 07:36:43
64
```
4e2df0 Matt Hughes 2026-08-20 01:32:52
65
The install target places a portable build at `build/windows-release/install/pointcaster.exe`, and the package target creates a zip archive at `dist/pointcaster-<version>-windows-release.zip`.
51fe60 Matt Hughes 2026-10-11 19:24:29
66
67
To produce a release package without opening a shell:
68
```sh
69
docker compose run --rm dev-win .\scripts\build-windows-release.ps1
70
```
399d19 Matt Hughes 2026-08-20 01:30:41
71
e07bf3 Matt Hughes 2026-03-16 07:19:41
72
### Windows Builds in an IDE
991d8c Matt Hughes 2026-03-17 01:08:34
73
#### Development Dependencies
bfbb40 Matt Hughes 2026-04-07 07:59:44
74
To build Pointcaster on Windows using an IDE like Visual Studio, you'll need to install the following libraries on your host:
75
- Qt ~~QtVersion~~, with the 'shadertools', 'quick3d' and 'tasktree' modules
76
- oneAPI Threading Building Blocks (oneTBB) ~~TbbVersion~~
77
- Python ~~PythonVersion~~
78
- Jinja ~~Jinja2Version~~
95383b Matt Hughes 2026-08-20 01:15:51
79
- NVIDIA CUDA Toolkit ~~CudaVersion~~
bfbb40 Matt Hughes 2026-04-07 07:59:44
80
ed2e06 Matt Hughes 2026-08-20 01:33:31
81
Additionally, your environment will need CMake, vcpkg, Ninja, and MSVC from Visual Studio 2022.
b780d8 Matt Hughes 2026-08-20 01:28:36
82
These are all included in Visual Studio's 'Desktop Development with C++' Workload.