Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This makes development more comfortable because the build intermediates (e.g. the generated bases classes for services) are available and VSCode can make full use of the CMake integration.
The Dockerfile for the development container has various improvements over the original one (which is still kept for CI and might be adjusted later):
Non-root user added which will automatically be updated to the current user's UID and GID. It has sudo permissions in case we want to install some further packages temporarily.
The "apt-get" command is run with cache mounts as recommended here: https://docs.docker.com/build/cache/optimize/#use-cache-mounts This speeds up the build if only a few new packages are added, because previously downloaded packages can be used from the cache. Obviously, this won't work if the cache is cleared.
"--no-install-recommends" is used to avoid installing more than 100 unnecessary packages. A few requirements are explicitly listed to ensure that the build still works. Otherwise e.g. include like "math.h" and "" are missing and there is a message "plugin needed to handle lto object".
The "build-binary.sh" script is adjusted to run within the development container. It now takes an optional argument to specify the preset (it defaults to "Release" as before).