Parent: Documentation Index
This guide helps contributors and maintainers to get started with the Daqster framework and develop plugins or new applications.
See also: Framework and Architecture.
This document covers local development workflow, code layout, plugin integration, and practical debugging entry points. For architectural structure use Architecture. For the build model and component templates use BuildSystemArchitecture.md.
git clone https://github.com/samiavasil/Daqster.git
git submodule update --init --recursive
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build -j
If you work with a specific Qt installation, pass CMAKE_PREFIX_PATH explicitly.
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_PREFIX_PATH=/path/to/Qt/5.15.2/gcc_64
cmake --build build -j
cd build/bin
./Daqster
src/frame_work — framework core, process management, plugin loading, shutdown handlingsrc/apps/Daqster — host application, toolbar, process orchestrationsrc/plugins — runtime plugins and plugin test targetssrc/external_libs — bundled third-party libraries used by some pluginscmake — build helpers, component templates, dependency checksSee BuildSystemArchitecture.md for the current build model. Basic steps:
src/plugins/YourPlugin.create_plugin() in the plugin’s own CMakeLists.txt and declare dependencies in REQUIRES_LIBRARIES.add_subdirectory(src/plugins/YourPlugin) in the root CMakeLists.txt.Example:
create_plugin(MyPlugin
SOURCES
MyPluginInterface.cpp
MyPluginObject.cpp
REQUIRES_LIBRARIES
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui
frame_work
)
Typical verification flow:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build --target MyPlugin -j
src/apps/YourApp.create_application() in the application’s CMakeLists.txt.add_subdirectory(src/apps/YourApp) in the root CMakeLists.txt.frame_work and the required Qt modules explicitly.QProcessManagersetupProcessEnvironment() to customize environment variables.onAllProcessesFinished() to implement headless behavior.ProcessEvent to observe process lifecycle.The main project example is ApplicationsManager under src/apps/Daqster.
QT_DEBUG_PLUGINS=1 when diagnosing plugin loading issues.-DDAQSTER_VERBOSE_DEPENDENCIES=ON when debugging build-time dependency decisions.Example:
cmake -S . -B build_check \
-DUSE_QT6=OFF \
-DDAQSTER_VERBOSE_DEPENDENCIES=ON \
-DCMAKE_PREFIX_PATH=/path/to/Qt/5.15.2/gcc_64
We provide a small pre-commit hook that can render PlantUML diagrams before commit and
stage generated SVG/PNG files automatically. This is optional but recommended for a smoother
developer experience.
Installation:
# From repo root (one-time per clone):
./scripts/install-hooks.sh
The hook will attempt to locate PlantUML in this order:
plantuml CLI on PATH./tools/plantuml.jar (recommended if you want repo-provided jar)./plantuml.jar (local copy)plantuml/plantuml:jetty) if Docker is availableIf PlantUML is not found, the hook runs in friendly mode and will allow the commit to proceed
but will print instructions. To enforce rendering (fail when PlantUML is absent), set
the environment variable PLANTUML_HOOK_STRICT=1.
To skip the hook for a single commit or push:
git commit -m "..." --no-verify
git push --no-verify
We also run PlantUML rendering in CI (GitHub Actions) to ensure canonical diagrams are generated even if a developer does not run the hook locally.