Build from Source¶
KFilter6 is a Qt6 Widgets application built with CMake and C++17.
Requirements¶
Required:
- CMake 3.21 or newer
- C++17-capable compiler
- Qt6 Core
- Qt6 Widgets
Useful for development:
- Ninja
- CTest
KFilter6 does not require KDE Frameworks.
Release-style build¶
From the repository root:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j"$(nproc)"
Run:
./build/kfilter_qt6
Run the test suite¶
ctest --test-dir build --output-on-failure
The default build enables the Qt6 application and the smoke tests. At Patch 300 there are 23 registered CTests. A patch counts as validated when it builds and ctest passes completely. Labels and pixel-exact alignment are not tested automatically where a fault is immediately visible and no functional contract is affected.
Last verified reference run:
Ubuntu 24.04, GCC 13.3.0, CMake 3.28.3, Qt 6.4.2, Release
0 errors, 0 warnings, 23/23 tests passed
Individual test targets can be switched through CMake options, for example:
-DKFILTER_BUILD_QT6_APP=ON
-DKFILTER_BUILD_DRIVER_SMOKETEST=ON
-DKFILTER_BUILD_PROJECTIO_SMOKETEST=ON
-DKFILTER_BUILD_DRIVER_PARAMETER_VALIDATION_SMOKETEST=ON
-DKFILTER_BUILD_VENTED_ROLLOFF_PHASE_SMOKETEST=ON
-DKFILTER_BUILD_MEASUREMENT_IMPORT_SMOKETEST=ON
-DKFILTER_BUILD_MEASUREMENT_EXPORT_SMOKETEST=ON
Repository documents and patch procedure¶
The repository carries its own documentation: CONTRACTS.md states what currently holds, OPEN_POINTS.md what is unresolved, and PORTING.md how each patch came about. Where PORTING.md and CONTRACTS.md disagree, the contract wins and the disagreement is a defect to be corrected.
The preferred change style is small, reviewable patches that keep the application buildable after each step. Since Patch 299 the Git repository is the authoritative basis:
- one patch is exactly one commit and increments
KFILTER_PATCH_LEVELinCMakeLists.txt - a patch applies against its direct predecessor, not cumulatively against an older baseline
- patches are exchanged with
git format-patchand applied withgit am -3 - line endings are LF, enforced through
.gitattributes
Development build with Ninja¶
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug
cmake --build build
ctest --test-dir build --output-on-failure
Distribution-specific packages¶
Exact Qt6 package names depend on the Linux distribution. On many distributions, Qt6 Core and Widgets are provided by the Qt6 base development package.
Gentoo-specific dependency notes can be added here when the public source distribution is finalized.