From 9bf628a4f7723e866a89eb520afbef351d34523e Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 13:03:12 +0100 Subject: [PATCH 01/22] use clang github --- .pre-commit-config.yaml | 12 +++++------- scripts/precommit/clang_format.sh | 13 ------------- 2 files changed, 5 insertions(+), 20 deletions(-) delete mode 100755 scripts/precommit/clang_format.sh diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a73f0f06..630ef4ed 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,16 +1,14 @@ repos: - repo: local - hooks: - - id: version-update name: 'Version update' entry: './scripts/precommit/version_update.sh' language: script files: ^CMakeLists.txt - - id: style-cpp - name: 'Style C++ code' - entry: './scripts/precommit/clang_format.sh' - language: script - files: ^src/.*|^tests/.*|^include/.*$ + - repo: https://github.com/pre-commit/mirrors-clang-format + rev: v20.1.0 + hooks: + - id: clang-format + files: ^(src|tests)/.*\.(c|cc|cpp|h|hpp)$ diff --git a/scripts/precommit/clang_format.sh b/scripts/precommit/clang_format.sh deleted file mode 100755 index 38a5406f..00000000 --- a/scripts/precommit/clang_format.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# Get list of staged files with relevant extensions -FILES=$(git diff --cached --name-only | grep -E '\.(cpp|hpp|cc|c|h)$') - -if [ -z "$FILES" ]; then - exit 0 -fi - -# Run clang-format on each staged file -for file in $FILES; do - [ -f "$file" ] && clang-format -i "$file" -done \ No newline at end of file From 7f7e00005343ed584dad337c5d93fbd4d5e90772 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 13:53:00 +0100 Subject: [PATCH 02/22] update to qt6 --- CMakeLists.txt | 18 +++++------------- README.md | 6 +++--- cmake/Config.cmake.in | 4 ++-- src/bin/CMakeLists.txt | 5 +---- tests/CMakeLists.txt | 2 +- 5 files changed, 12 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 042685b7..623598c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,27 +34,19 @@ find_package(SimpleRasters REQUIRED) if(NEEDS_QT) set(CMAKE_AUTOMOC TRUE) - find_package(Qt5 COMPONENTS Core Xml Test REQUIRED) - - set(QT_INCLUDES - ${Qt5Core_INCLUDE_DIRS} - ) + find_package(Qt6 COMPONENTS Core Xml Test REQUIRED) set(QT_LIBS - Qt5::Core + Qt6::Core ) if(BUILD_GUI_APP) - find_package(Qt5 COMPONENTS Core Widgets Xml Gui Test REQUIRED) - - set(QT_INCLUDES - ${Qt5Core_INCLUDE_DIRS} - ) + find_package(Qt6 COMPONENTS Core Widgets Xml Gui Test REQUIRED) set(QT_LIBS ${QT_LIBS} - Qt5::Gui - Qt5::Widgets + Qt6::Gui + Qt6::Widgets ) endif() diff --git a/README.md b/README.md index 9b19e714..0253203e 100644 --- a/README.md +++ b/README.md @@ -116,9 +116,9 @@ If you use the library, please cite it accordingly: @Software{CahaViewshed, author = {Jan Caha}, title = {viewshed ({C++ Viewshed library based on GDAL and Qt})}, - year = {2024}, - date = {2024-07-11}, - version = {4.0.3}, + year = {2026} + date = {2026-02-17} + version = {4.2.0} url = {https://github.com/JanCaha/cpp-viewshed-library}, } ``` diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in index 193445a9..84e949ad 100644 --- a/cmake/Config.cmake.in +++ b/cmake/Config.cmake.in @@ -9,9 +9,9 @@ find_dependency(SimpleRasters REQUIRED) # Optional Qt dependency if(@HAS_QT@) - find_dependency(Qt5 COMPONENTS Core Xml Test REQUIRED) + find_dependency(Qt6 COMPONENTS Core Xml Test REQUIRED) if(@BUILD_GUI_APP@) - find_dependency(Qt5 COMPONENTS Widgets Gui REQUIRED) + find_dependency(Qt6 COMPONENTS Widgets Gui REQUIRED) endif() endif() diff --git a/src/bin/CMakeLists.txt b/src/bin/CMakeLists.txt index a628353d..78fb8492 100644 --- a/src/bin/CMakeLists.txt +++ b/src/bin/CMakeLists.txt @@ -6,8 +6,6 @@ macro(create_binary bin_name filename) set_target_properties(${bin_name} PROPERTIES AUTOMOC TRUE) - target_include_directories(${bin_name} PRIVATE ${QT_INCLUDES}) - target_include_directories(${bin_name} PUBLIC $ $ @@ -65,8 +63,7 @@ if(HAS_QT) set_target_properties(viewshed_widgets PROPERTIES VERSION ${PROJECT_VERSION}) - target_include_directories(viewshed_widgets PRIVATE ${QT_INCLUDES}) - install(TARGETS + install(TARGETS viewshed_widgets COMPONENT bin RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ec4c51b8..81a0c7f4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -53,7 +53,7 @@ macro(add_gui_test filename) GDAL::GDAL SimpleRasters::simplerasters_shared ${QT_LIBS} - Qt5::Test + Qt6::Test viewshed_widgets ) From 370c337a3f019f30829cdb5bae872fec213f9583 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 13:55:10 +0100 Subject: [PATCH 03/22] fix typo --- include/viewshed/abstractviewshed.h | 2 +- src/library/visibility/abstractviewshed.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/viewshed/abstractviewshed.h b/include/viewshed/abstractviewshed.h index 7db965cc..2d6f7a93 100644 --- a/include/viewshed/abstractviewshed.h +++ b/include/viewshed/abstractviewshed.h @@ -95,7 +95,7 @@ namespace viewshed * * @param maxTasks */ - void setMaxConcurentTaks( int maxTasks ); + void setMaxConcurentTasks( int maxTasks ); /** * @brief Set the maximal number of threads that can be used for calculation. diff --git a/src/library/visibility/abstractviewshed.cpp b/src/library/visibility/abstractviewshed.cpp index 673ab5b8..44538ba2 100644 --- a/src/library/visibility/abstractviewshed.cpp +++ b/src/library/visibility/abstractviewshed.cpp @@ -301,7 +301,7 @@ LoSNode AbstractViewshed::statusNodeFromPoint( OGRPoint point ) return ln; } -void AbstractViewshed::setMaxConcurentTaks( int maxTasks ) { mMaxNumberOfTasks = maxTasks; } +void AbstractViewshed::setMaxConcurentTasks( int maxTasks ) { mMaxNumberOfTasks = maxTasks; } void AbstractViewshed::setMaxThreads( int threads ) { From 42608f73cc79df446bdc6aa5bc309096bef21745 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 13:55:28 +0100 Subject: [PATCH 04/22] fix error in naming --- src/library/visibility/abstractviewshed.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library/visibility/abstractviewshed.cpp b/src/library/visibility/abstractviewshed.cpp index 44538ba2..5c3a2f6c 100644 --- a/src/library/visibility/abstractviewshed.cpp +++ b/src/library/visibility/abstractviewshed.cpp @@ -258,7 +258,7 @@ void AbstractViewshed::saveResults( std::string location, std::string fileNamePr } else { - fileName = mVisibilityIndices->at( i )->name() + ".tif"; + fileName = fileNamePrefix + mVisibilityIndices->at( i )->name() + ".tif"; } filePath = location + "/" + fileName; From ecab8fdbf12edbda3b948e7813e2e943ed9f675a Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 13:56:00 +0100 Subject: [PATCH 05/22] new constructor --- src/library/visibility/abstractviewshed.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library/visibility/abstractviewshed.cpp b/src/library/visibility/abstractviewshed.cpp index 5c3a2f6c..7e27be95 100644 --- a/src/library/visibility/abstractviewshed.cpp +++ b/src/library/visibility/abstractviewshed.cpp @@ -227,7 +227,7 @@ void AbstractViewshed::parseEventList( std::function dem_, std::string fileName, std::function func ) { - SingleBandRaster result = SingleBandRaster( *dem_.get() ); + SingleBandRaster result = SingleBandRaster( *dem_.get(), false ); std::size_t i = 0; for ( CellEvent event : mCellEvents ) From 712d28c8faf0ba005667ea2c2fbec2fd3fbeee1b Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 13:57:49 +0100 Subject: [PATCH 06/22] another approach to handling threads --- src/library/visibility/abstractviewshed.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/library/visibility/abstractviewshed.cpp b/src/library/visibility/abstractviewshed.cpp index 7e27be95..aaa9807d 100644 --- a/src/library/visibility/abstractviewshed.cpp +++ b/src/library/visibility/abstractviewshed.cpp @@ -209,12 +209,13 @@ void AbstractViewshed::parseEventList( std::function= mMaxNumberOfTasks ) { - // parse result to rasters to avoid clutching in memory - mThreadPool.wait(); + while ( mThreadPool.get_tasks_total() > mMaxNumberOfTasks / 2 ) + { + mThreadPool.wait_for( std::chrono::milliseconds( 1 ) ); + } } - i++; } From cc5475c5d758f447fcda73fe2ad14d4205bf625c Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 13:58:53 +0100 Subject: [PATCH 07/22] const things --- include/viewshed/abstractviewshed.h | 2 +- include/viewshed/inverseviewshed.h | 2 +- include/viewshed/viewshed.h | 2 +- src/library/visibility/abstractviewshed.cpp | 8 ++++---- src/library/visibility/inverseviewshed.cpp | 6 +++--- src/library/visibility/viewshed.cpp | 6 +++--- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/viewshed/abstractviewshed.h b/include/viewshed/abstractviewshed.h index 2d6f7a93..44ea19fa 100644 --- a/include/viewshed/abstractviewshed.h +++ b/include/viewshed/abstractviewshed.h @@ -137,7 +137,7 @@ namespace viewshed * * @param e */ - virtual void submitToThreadpool( CellEvent &e ) = 0; + virtual void submitToThreadpool( const CellEvent &e ) = 0; /** * @brief Extract individual result raster. diff --git a/include/viewshed/inverseviewshed.h b/include/viewshed/inverseviewshed.h index bbad0f26..8e9bea28 100644 --- a/include/viewshed/inverseviewshed.h +++ b/include/viewshed/inverseviewshed.h @@ -34,7 +34,7 @@ namespace viewshed std::shared_ptr getLoS( OGRPoint point, bool onlyToPoint = false ); - void submitToThreadpool( CellEvent &e ) override; + void submitToThreadpool( const CellEvent &e ) override; void addEventsFromCell( int &row, int &column, const double &pixelValue, bool &solveCell ) override; diff --git a/include/viewshed/viewshed.h b/include/viewshed/viewshed.h index ba30e96a..9aeda7b4 100644 --- a/include/viewshed/viewshed.h +++ b/include/viewshed/viewshed.h @@ -35,7 +35,7 @@ namespace viewshed void addEventsFromCell( int &row, int &column, const double &pixelValue, bool &solveCell ) override; - void submitToThreadpool( CellEvent &e ) override; + void submitToThreadpool( const CellEvent &e ) override; void calculateVisibilityRaster() override; }; diff --git a/src/library/visibility/abstractviewshed.cpp b/src/library/visibility/abstractviewshed.cpp index aaa9807d..d60255ff 100644 --- a/src/library/visibility/abstractviewshed.cpp +++ b/src/library/visibility/abstractviewshed.cpp @@ -165,7 +165,7 @@ void AbstractViewshed::parseEventList( std::function AbstractViewshed::prepareLoSWithPoint( OGRPoint point ) std::vector losNodes; - for ( CellEvent e : mCellEvents ) + for ( const CellEvent &e : mCellEvents ) { switch ( e.mEventType ) { diff --git a/src/library/visibility/inverseviewshed.cpp b/src/library/visibility/inverseviewshed.cpp index 0e37857b..96846e50 100644 --- a/src/library/visibility/inverseviewshed.cpp +++ b/src/library/visibility/inverseviewshed.cpp @@ -80,7 +80,7 @@ void InverseViewshed::calculate( std::function step stepsTimingCallback( "Parsing of event list lasted: ", parseLastedSeconds() ); } -void InverseViewshed::submitToThreadpool( CellEvent &e ) +void InverseViewshed::submitToThreadpool( const CellEvent &e ) { std::shared_ptr poi = std::make_shared( mPoint->mRow, mPoint->mCol, &e, mCellSize ); @@ -202,7 +202,7 @@ void InverseViewshed::calculateVisibilityRaster() std::map los; - for ( LoSNode ln : mLosNodes ) + for ( const LoSNode &ln : mLosNodes ) { if ( ln.mInverseLoSBehindTarget ) { @@ -213,7 +213,7 @@ void InverseViewshed::calculateVisibilityRaster() } std::size_t i = 0; - for ( CellEvent e : mCellEvents ) + for ( const CellEvent &e : mCellEvents ) { // progressCallback( mCellEvents.size(), i ); diff --git a/src/library/visibility/viewshed.cpp b/src/library/visibility/viewshed.cpp index c1c5f1c6..fc71dbb3 100644 --- a/src/library/visibility/viewshed.cpp +++ b/src/library/visibility/viewshed.cpp @@ -79,7 +79,7 @@ void Viewshed::calculate( std::function stepsTiming stepsTimingCallback( "Parsing of event list lasted: ", parseLastedSeconds() ); } -void Viewshed::submitToThreadpool( CellEvent &e ) +void Viewshed::submitToThreadpool( const CellEvent &e ) { std::shared_ptr poi = std::make_shared( mPoint->mRow, mPoint->mCol, &e, mCellSize ); @@ -158,7 +158,7 @@ void Viewshed::calculateVisibilityRaster() std::map los; - for ( LoSNode ln : mLosNodes ) + for ( const LoSNode &ln : mLosNodes ) { los.insert( std::pair( ln.centreDistance(), ln ) ); } @@ -167,7 +167,7 @@ void Viewshed::calculateVisibilityRaster() mVisibilityRaster->writeValue( mPoint->mRow, mPoint->mCol, 1 ); std::size_t i = 0; - for ( CellEvent e : mCellEvents ) + for ( const CellEvent &e : mCellEvents ) { // progressCallback( mCellEvents.size(), i ); From b65085776f0aaa7281f8973f291f95d2741ffea4 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 13:59:07 +0100 Subject: [PATCH 08/22] avoid issues --- src/library/visibility/viewshed.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library/visibility/viewshed.cpp b/src/library/visibility/viewshed.cpp index fc71dbb3..e23a257b 100644 --- a/src/library/visibility/viewshed.cpp +++ b/src/library/visibility/viewshed.cpp @@ -31,7 +31,7 @@ Viewshed::Viewshed( std::shared_ptr viewPoint, std::shared_ptrxCellSize(); - mThreadPool.reset( mThreadPool.get_thread_count() - 1 ); + mThreadPool.reset( std::max( 1, mThreadPool.get_thread_count() - 1 ) ); mValid = true; } From ecce862a106a54181462bb29a54049ee47f254b6 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 13:59:21 +0100 Subject: [PATCH 09/22] fix function --- src/bin/commandlinehelper.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/bin/commandlinehelper.h b/src/bin/commandlinehelper.h index 25bb49cd..6ed3d8a6 100644 --- a/src/bin/commandlinehelper.h +++ b/src/bin/commandlinehelper.h @@ -9,7 +9,7 @@ #include #include -int exitWithError( std::string error, QCommandLineParser &parser ) +[[noreturn]] void exitWithError( std::string error, QCommandLineParser &parser ) { fprintf( stderr, "%s\n", error.c_str() ); parser.showHelp( 1 ); @@ -101,7 +101,8 @@ double getHeightTarget( QCommandLineParser &parser ) struct Coord { - double x, y; + double x = 0; + double y = 0; }; Coord getCoords( QCommandLineParser &parser, QString paramName ) From 0690d6e733bc2a8143441ba1ec14a81a9db5aa80 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 13:59:49 +0100 Subject: [PATCH 10/22] use checkStateChanged --- src/bin/losextractor.cpp | 2 +- src/bin/viewshedcalculatorwindow.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bin/losextractor.cpp b/src/bin/losextractor.cpp index 52d12f58..a635376f 100644 --- a/src/bin/losextractor.cpp +++ b/src/bin/losextractor.cpp @@ -232,7 +232,7 @@ namespace ViewshedBinaries connect( mFileWidget, &FileSelectorWidget::fileChanged, this, &MainWindow::demUpdated ); connect( mCsvFileWidget, &FileSelectorWidget::fileChanged, this, &MainWindow::updateResultCsv ); connect( mCalculateButton, &QPushButton::clicked, this, &MainWindow::calculateViewshed ); - connect( mCurvatureCorrections, &QCheckBox::stateChanged, this, &MainWindow::saveSettings ); + connect( mCurvatureCorrections, &QCheckBox::checkStateChanged, this, &MainWindow::saveSettings ); connect( mRefractionCoefficient, &QLineEdit::textChanged, this, &MainWindow::saveSettings ); connect( mEarthDiameter, &QLineEdit::textChanged, this, &MainWindow::saveSettings ); diff --git a/src/bin/viewshedcalculatorwindow.cpp b/src/bin/viewshedcalculatorwindow.cpp index 6ac6cbc0..3df8f9fb 100644 --- a/src/bin/viewshedcalculatorwindow.cpp +++ b/src/bin/viewshedcalculatorwindow.cpp @@ -202,8 +202,8 @@ void MainCalculatorWindow::initGui() connect( mViewshedType, qOverload( &QComboBox::currentIndexChanged ), this, &MainCalculatorWindow::saveSettings ); - connect( mNoDataForInvisible, &QCheckBox::stateChanged, this, &MainCalculatorWindow::saveSettings ); - connect( mCurvatureCorrections, &QCheckBox::stateChanged, this, &MainCalculatorWindow::saveSettings ); + connect( mNoDataForInvisible, &QCheckBox::checkStateChanged, this, &MainCalculatorWindow::saveSettings ); + connect( mCurvatureCorrections, &QCheckBox::checkStateChanged, this, &MainCalculatorWindow::saveSettings ); connect( mRefractionCoefficient, &QLineEdit::textChanged, this, &MainCalculatorWindow::saveSettings ); connect( mEarthDiameter, &QLineEdit::textChanged, this, &MainCalculatorWindow::saveSettings ); connect( mFileWidget, &FileSelectorWidget::fileChanged, this, &MainCalculatorWindow::validateDem ); From 8a6c478ad08e22c0e9a988f5491a099eec320731 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 14:00:17 +0100 Subject: [PATCH 11/22] skip some tests in debug builds --- tests/testsettings.in.h | 4 ++++ tests/testviewshedtiming.cpp | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/tests/testsettings.in.h b/tests/testsettings.in.h index 10d590ff..13853748 100644 --- a/tests/testsettings.in.h +++ b/tests/testsettings.in.h @@ -1,6 +1,8 @@ #ifndef TEST_SETTINGS_H_IN #define TEST_SETTINGS_H_IN +#include + #define TEST_DATA_DIR "@TEST_DATA_DIR@" #define TEST_DATA_RESULTS_DIR "@TEST_DATA_DIR@/results" #define TEST_DATA_RESULTS_VISIBILITY_RASTER "@TEST_DATA_DIR@/results/visibility_raster.tif" @@ -8,4 +10,6 @@ #define TEST_DATA_DSM_SMALL "@TEST_DATA_DIR@/dsm_small.tif" #define TEST_DATA_LOS "@TEST_DATA_DIR@/results/los.csv" +static const bool TEST_BUILD_IS_RELEASE = std::string( "@CMAKE_BUILD_TYPE@" ) == "Release"; + #endif // TEST_SETTINGS_H_IN \ No newline at end of file diff --git a/tests/testviewshedtiming.cpp b/tests/testviewshedtiming.cpp index b8683ac1..5fe6328c 100755 --- a/tests/testviewshedtiming.cpp +++ b/tests/testviewshedtiming.cpp @@ -92,6 +92,11 @@ TEST_F( ViewshedTimingTest, initEventList ) TEST_F( ViewshedTimingTest, sortEventList ) { + if ( !TEST_BUILD_IS_RELEASE ) + { + GTEST_SKIP() << "Skipping on DEBUG build."; + } + if ( isRunningOnGithubActions() ) { GTEST_SKIP() << "Skipping due to fails."; @@ -112,6 +117,11 @@ TEST_F( ViewshedTimingTest, sortEventList ) TEST_F( ViewshedTimingTest, parseEventList ) { + if ( !TEST_BUILD_IS_RELEASE ) + { + GTEST_SKIP() << "Skipping on DEBUG build."; + } + if ( isRunningOnGithubActions() ) { GTEST_SKIP() << "Skipping due to fails."; From f90efc9e4e60a5fca17998f3fc9ff9067ec7fd40 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 14:02:45 +0100 Subject: [PATCH 12/22] cmake preset --- CMakePresets.json | 98 ++++++++++++++++++++++++++++++++++++++++++++++ scripts/install.sh | 24 +----------- scripts/test.sh | 1 + 3 files changed, 100 insertions(+), 23 deletions(-) create mode 100644 CMakePresets.json create mode 100755 scripts/test.sh diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 00000000..fb95719f --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,98 @@ +{ + "version": 6, + "cmakeMinimumRequired": { + "major": 3, + "minor": 23, + "patch": 0 + }, + "configurePresets": [ + { + "name": "configure-base-ninja", + "hidden": true, + "generator": "Ninja", + "binaryDir": "${sourceDir}/build/${presetName}" + }, + { + "name": "configure-debug-tests", + "inherits": "configure-base-ninja", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug", + "BUILD_TESTS": "ON", + "PACK_DEB": "OFF" + } + }, + { + "name": "configure-release-install", + "inherits": "configure-base-ninja", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "BUILD_TESTS": "OFF", + "PACK_DEB": "ON", + "CMAKE_INSTALL_PREFIX": "/usr", + "BUILD_DOCUMENTATION": "ON" + } + } + ], + "buildPresets": [ + { + "name": "build-debug-tests", + "configurePreset": "configure-debug-tests" + }, + { + "name": "build-release-install", + "configurePreset": "configure-release-install" + }, + { + "name": "build-release-install-target", + "configurePreset": "configure-release-install", + "targets": [ + "install" + ] + } + ], + "testPresets": [ + { + "name": "test-debug-tests", + "configurePreset": "configure-debug-tests", + "output": { + "verbosity": "verbose" + } + } + ], + "workflowPresets": [ + { + "name": "workflow-debug-tests", + "steps": [ + { + "type": "configure", + "name": "configure-debug-tests" + }, + { + "type": "build", + "name": "build-debug-tests" + }, + { + "type": "test", + "name": "test-debug-tests" + } + ] + }, + { + "name": "workflow-release-install", + "steps": [ + { + "type": "configure", + "name": "configure-release-install" + }, + { + "type": "build", + "name": "build-release-install" + }, + { + "type": "build", + "name": "build-release-install-target" + } + ] + } + ] +} \ No newline at end of file diff --git a/scripts/install.sh b/scripts/install.sh index 27382ed9..a73c2fde 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -1,24 +1,2 @@ -cmake --build build --target clean - -cmake \ - -S . \ - -B build \ - -G Ninja \ - -D CMAKE_C_COMPILER=clang \ - -D CMAKE_CXX_COMPILER=clang++ \ - -D CMAKE_BUILD_TYPE=Release \ - -D PACK_DEB:bool=ON \ - -D BUILD_DOCUMENTATION:bool=off \ - -D BUILD_TESTS:bool=off \ - -D CELL_EVENT_DATA_FLOAT:bool=on \ - -D OUTPUT_RASTER_DATA_FLOAT:bool=on \ - -D CMAKE_INSTALL_PREFIX=/usr \ - -D NEEDS_QT:bool=on \ - -D BUILD_GUI_APP:bool=on - -cmake --build build --config Release --target viewshed_shared -cmake --build build --config Release --target viewshed_static -cmake --build build --config Release --target create_binaries - # install -sudo cmake --build build --config Release --target install +sudo cmake --workflow --preset workflow-release-install diff --git a/scripts/test.sh b/scripts/test.sh new file mode 100755 index 00000000..7e05e12e --- /dev/null +++ b/scripts/test.sh @@ -0,0 +1 @@ +cmake --workflow --preset workflow-debug-tests From 03aa8f3c75a39e002a94f855fc142dd8a6377a7b Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 14:20:18 +0100 Subject: [PATCH 13/22] use size_t --- src/library/thread_tasks/threadtasks.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library/thread_tasks/threadtasks.cpp b/src/library/thread_tasks/threadtasks.cpp index a992926e..9fa878d1 100644 --- a/src/library/thread_tasks/threadtasks.cpp +++ b/src/library/thread_tasks/threadtasks.cpp @@ -17,7 +17,7 @@ void viewshed::evaluateLoS( std::shared_ptr los, std::shared_ptrsize(); j++ ) + for ( size_t j = 0; j < algs->size(); j++ ) { results->at( j )->writeValue( losEval.results().mRow, losEval.results().mCol, losEval.resultAt( j ) ); } From 3fcef4d90790e29c754b4d4ece577b216bf452ec Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 14:20:29 +0100 Subject: [PATCH 14/22] square cells --- src/library/utils/viewshedutils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library/utils/viewshedutils.cpp b/src/library/utils/viewshedutils.cpp index 91d5faee..cac273c6 100644 --- a/src/library/utils/viewshedutils.cpp +++ b/src/library/utils/viewshedutils.cpp @@ -185,7 +185,7 @@ bool ViewshedUtils::validateRaster( std::shared_ptr rl, std::s if ( !doubleEqual( rl->xCellSize(), rl->yCellSize(), 0.0001 ) ) { - error = "Raster needs to have rectangular cells."; + error = "Raster needs to have square cells."; return false; } From d78bd99920b1665639439b8b581bd8bccf5c828b Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 14:21:20 +0100 Subject: [PATCH 15/22] update versions --- CMakeLists.txt | 4 ++-- README.md | 2 +- conda/meta.yaml | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 623598c7..bbd13986 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ -cmake_minimum_required(VERSION 3.20.0) +cmake_minimum_required(VERSION 3.24.0) # Project Information -project(viewshed VERSION 4.2.0 DESCRIPTION "C++ Viewshed library based on GDAL and Qt" LANGUAGES CXX) +project(viewshed VERSION 5.0.0 DESCRIPTION "C++ Viewshed library based on GDAL and Qt" LANGUAGES CXX) # Library Name SET(LIBRARY_NAME "Viewshed") diff --git a/README.md b/README.md index 0253203e..7d4cbb8d 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ If you use the library, please cite it accordingly: title = {viewshed ({C++ Viewshed library based on GDAL and Qt})}, year = {2026} date = {2026-02-17} - version = {4.2.0} + version = {5.0.0} url = {https://github.com/JanCaha/cpp-viewshed-library}, } ``` diff --git a/conda/meta.yaml b/conda/meta.yaml index baea49c6..2bddbc59 100644 --- a/conda/meta.yaml +++ b/conda/meta.yaml @@ -1,6 +1,6 @@ package: name: libviewshed - version: "4.2.0" + version: "5.0.0" source: path: .. @@ -15,18 +15,18 @@ requirements: - pthread-stubs - libgdal - libsimplerasters - - qt-main 5.* + - qt-main 6.* - mesalib # [unix] host: - pthread-stubs - libgdal - libsimplerasters - - qt-main 5.* + - qt-main 6.* - mesalib # [unix] run: - libgdal - libsimplerasters - - qt-main 5.* + - qt-main 6.* - mesalib # [unix] test: From ed6543a78933484fb23f17718de5f2ce2ae7acd2 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 16:03:28 +0100 Subject: [PATCH 16/22] qt6 --- .github/workflows/test_library.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_library.yaml b/.github/workflows/test_library.yaml index 54db2656..a5007e4c 100644 --- a/.github/workflows/test_library.yaml +++ b/.github/workflows/test_library.yaml @@ -146,7 +146,7 @@ jobs: - name: Install Qt run: | - sudo apt install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools + sudo apt install qt6-base-dev qt6-base-dev-tools - name: Configure run: | From fed3cd10bc9f828588868f04ca2a33a574023951 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 16:03:51 +0100 Subject: [PATCH 17/22] update releases --- .github/workflows/create_releases.yaml | 372 ++++++++++++------------- 1 file changed, 183 insertions(+), 189 deletions(-) diff --git a/.github/workflows/create_releases.yaml b/.github/workflows/create_releases.yaml index 6f242877..17987ae0 100644 --- a/.github/workflows/create_releases.yaml +++ b/.github/workflows/create_releases.yaml @@ -10,207 +10,201 @@ on: types: - completed branches: - - 'main' - - 'master' + - "main" + - "master" workflow_dispatch: - + env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PACKAGE: viewshed COMPILER: c++ - PYTHON_VERSION: "3.10" - -jobs: + PYTHON_VERSION: "3.12" +jobs: Create-deb-file-library: - runs-on: ubuntu-latest steps: - - - name: Checkout - uses: actions/checkout@v4 - with: - submodules: true - - - name: Set env - id: version - run: | - echo "VERSION=$(grep "project(" CMakeLists.txt | grep -E -o -e "[0-9\.]+")" >> $GITHUB_ENV - echo "VERSION=$(grep "project(" CMakeLists.txt | grep -E -o -e "[0-9\.]+")" >> $GITHUB_OUTPUT - - - name: Print Version - run: | - echo "-----" - echo "Project Version" - echo ${PACKAGE} - echo ${VERSION} - echo ${{steps.version.outputs.VERSION}} - echo "-----" - - - name: Update and Upgrade - run: | - sudo apt update - sudo apt install ninja-build doxygen libgtest-dev libgmock-dev clang - - - name: Install Qt - uses: jurplel/install-qt-action@v3 - with: - version: '5.15.2' - host: 'linux' - - - name: Install GDAL - run: | - sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable - sudo apt update - sudo apt-get -y install gdal-bin libgdal-dev - - - uses: robinraju/release-downloader@v1 - with: - repository: "JanCaha/cpp-simplerasters" - latest: true - fileName: "*.deb" - tarBall: false - zipBall: false - - - name: Install and remove artifact - run: | - sudo apt install ./simplerasters*.deb - rm simplerasters* - - - name: Configure - with Qt - run: | - mkdir build - cmake \ - -S. \ - -Bbuild \ - -G Ninja \ - -DCMAKE_CXX_COMPILER=${COMPILER} \ - -DCMAKE_BUILD_TYPE=Release \ - -DPACK_DEB:bool=on \ - -DBUILD_DOCUMENTATION:bool=on \ - -DBUILD_TESTS:bool=on \ - -DCELL_EVENT_DATA_FLOAT:bool=on \ - -DOUTPUT_RASTER_DATA_FLOAT:bool=on \ - -DBUILD_GUI_APP:bool=on \ - -DNEEDS_QT:bool=on \ - -DCMAKE_INSTALL_PREFIX=/usr - - - name: Build DEB - with Qt - run: | - cmake --build build --config Release --target all - cmake --build build --config Release --target pack_viewshed_library_deb - - - name: Install from DEB - with Qt - run: | - sudo apt install ./_packages/viewshed*.deb - - - name: Configure - without Qt - run: | - rm -rf build - mkdir build - cmake \ - -S. \ - -Bbuild \ - -G Ninja \ - -DCMAKE_CXX_COMPILER=${COMPILER} \ - -DCMAKE_BUILD_TYPE=Release \ - -DPACK_DEB:bool=on \ - -DBUILD_DOCUMENTATION:bool=off \ - -DBUILD_TESTS:bool=off \ - -DCELL_EVENT_DATA_FLOAT:bool=on \ - -DOUTPUT_RASTER_DATA_FLOAT:bool=on \ - -DBUILD_GUI_APP:bool=off \ - -DNEEDS_QT:bool=off \ - -DCMAKE_INSTALL_PREFIX=/usr - - - name: Build DEB - without Qt - run: | - cmake --build build --config Release --target all - cmake --build build --config Release --target pack_viewshed_library_deb - - - name: Upload DEB file as artifact - uses: actions/upload-artifact@v4 - with: - name: viewshed - path: _packages/viewshed*.deb - - - name: Move deb file - run: | - mv _packages/viewshed*.deb . - - - name: Release - uses: softprops/action-gh-release@v2 - with: - files: viewshed*.deb - tag_name: "v${{steps.version.outputs.VERSION}}" - - - name: Deploy Documentation - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./documentation - publish_branch: gh-pages - - - uses: actions/setup-python@v5 - with: - python-version: ${{env.PYTHON_VERSION}} - architecture: 'x64' - - - name: Install pip packages - run: | - pip install wheel py-build-cmake build - - - uses: actions/checkout@v4 - with: - repository: 'JanCaha/viewshed-library-pybind11' - path: 'python-package' - submodules: true - - - name: Install package - run: | - cd python-package - python -m build . - - - uses: actions/upload-artifact@v4 - with: - name: python-viewshed - path: python-package/dist/viewshed*.whl + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Set env + id: version + run: | + echo "VERSION=$(grep "project(" CMakeLists.txt | grep -E -o -e "[0-9\.]+")" >> $GITHUB_ENV + echo "VERSION=$(grep "project(" CMakeLists.txt | grep -E -o -e "[0-9\.]+")" >> $GITHUB_OUTPUT + + - name: Print Version + run: | + echo "-----" + echo "Project Version" + echo ${PACKAGE} + echo ${VERSION} + echo ${{steps.version.outputs.VERSION}} + echo "-----" + + - name: Update and Upgrade + run: | + sudo apt update + sudo apt install ninja-build doxygen libgtest-dev libgmock-dev clang + + - name: Install Qt + uses: jurplel/install-qt-action@v3 + with: + version: "6.9.*" + host: "linux" + + - name: Install GDAL + run: | + sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable + sudo apt update + sudo apt-get -y install gdal-bin libgdal-dev + + - uses: robinraju/release-downloader@v1 + with: + repository: "JanCaha/cpp-simplerasters" + latest: true + fileName: "*.deb" + tarBall: false + zipBall: false + + - name: Install and remove artifact + run: | + sudo apt install ./simplerasters*.deb + rm simplerasters* + + - name: Configure - with Qt + run: | + mkdir build + cmake \ + -S. \ + -Bbuild \ + -G Ninja \ + -DCMAKE_CXX_COMPILER=${COMPILER} \ + -DCMAKE_BUILD_TYPE=Release \ + -DPACK_DEB:bool=on \ + -DBUILD_DOCUMENTATION:bool=on \ + -DBUILD_TESTS:bool=on \ + -DCELL_EVENT_DATA_FLOAT:bool=on \ + -DOUTPUT_RASTER_DATA_FLOAT:bool=on \ + -DBUILD_GUI_APP:bool=on \ + -DNEEDS_QT:bool=on \ + -DCMAKE_INSTALL_PREFIX=/usr + + - name: Build DEB - with Qt + run: | + cmake --build build --config Release --target all + cmake --build build --config Release --target pack_viewshed_library_deb + + - name: Install from DEB - with Qt + run: | + sudo apt install ./_packages/viewshed*.deb + + - name: Configure - without Qt + run: | + rm -rf build + mkdir build + cmake \ + -S. \ + -Bbuild \ + -G Ninja \ + -DCMAKE_CXX_COMPILER=${COMPILER} \ + -DCMAKE_BUILD_TYPE=Release \ + -DPACK_DEB:bool=on \ + -DBUILD_DOCUMENTATION:bool=off \ + -DBUILD_TESTS:bool=off \ + -DCELL_EVENT_DATA_FLOAT:bool=on \ + -DOUTPUT_RASTER_DATA_FLOAT:bool=on \ + -DBUILD_GUI_APP:bool=off \ + -DNEEDS_QT:bool=off \ + -DCMAKE_INSTALL_PREFIX=/usr + + - name: Build DEB - without Qt + run: | + cmake --build build --config Release --target all + cmake --build build --config Release --target pack_viewshed_library_deb + + - name: Upload DEB file as artifact + uses: actions/upload-artifact@v4 + with: + name: viewshed + path: _packages/viewshed*.deb + + - name: Move deb file + run: | + mv _packages/viewshed*.deb . + + - name: Release + uses: softprops/action-gh-release@v2 + with: + files: viewshed*.deb + tag_name: "v${{steps.version.outputs.VERSION}}" + + - name: Deploy Documentation + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./documentation + publish_branch: gh-pages + + - uses: actions/setup-python@v5 + with: + python-version: ${{env.PYTHON_VERSION}} + architecture: "x64" + + - name: Install pip packages + run: | + pip install wheel py-build-cmake build + + - uses: actions/checkout@v4 + with: + repository: "JanCaha/viewshed-library-pybind11" + path: "python-package" + submodules: true + + - name: Install package + run: | + cd python-package + python -m build . + + - uses: actions/upload-artifact@v4 + with: + name: python-viewshed + path: python-package/dist/viewshed*.whl Release-Docker: - runs-on: ubuntu-latest steps: - - - name: Checkout - uses: actions/checkout@v4 - - - name: Log in to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Set Env and GA Output - id: version - run: | - echo "VERSION=$(grep "project(" CMakeLists.txt | grep -E -o -e "[0-9\.]+")" >> $GITHUB_ENV - echo "VERSION=$(grep "project(" CMakeLists.txt | grep -E -o -e "[0-9\.]+")" >> $GITHUB_OUTPUT - - - name: Build and push Docker image version with Python - uses: docker/build-push-action@v4 - with: - file: docker/Dockerfile - context: docker/ - push: true - tags: "cahik/viewshed:v${{steps.version.outputs.VERSION}}" - - - name: Build and push Docker image latest with Python - uses: docker/build-push-action@v4 - with: - file: docker/Dockerfile - context: docker/ - push: true - tags: cahik/viewshed:latest - + - name: Checkout + uses: actions/checkout@v4 + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Set Env and GA Output + id: version + run: | + echo "VERSION=$(grep "project(" CMakeLists.txt | grep -E -o -e "[0-9\.]+")" >> $GITHUB_ENV + echo "VERSION=$(grep "project(" CMakeLists.txt | grep -E -o -e "[0-9\.]+")" >> $GITHUB_OUTPUT + + - name: Build and push Docker image version with Python + uses: docker/build-push-action@v4 + with: + file: docker/Dockerfile + context: docker/ + push: true + tags: "cahik/viewshed:v${{steps.version.outputs.VERSION}}" + + - name: Build and push Docker image latest with Python + uses: docker/build-push-action@v4 + with: + file: docker/Dockerfile + context: docker/ + push: true + tags: cahik/viewshed:latest From 5b054f8bccdbdaa6f9a4dcd48d183d0388c71269 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 16:11:51 +0100 Subject: [PATCH 18/22] qt 6.10.* --- .github/workflows/test_library.yaml | 34 +++++++++++++---------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/.github/workflows/test_library.yaml b/.github/workflows/test_library.yaml index a5007e4c..c5115584 100644 --- a/.github/workflows/test_library.yaml +++ b/.github/workflows/test_library.yaml @@ -4,13 +4,10 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true - on: [push, pull_request] jobs: - Tests-Viewshed-library: - runs-on: ubuntu-latest env: @@ -20,7 +17,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - - name: Update and Upgrade run: | sudo apt update @@ -31,7 +27,7 @@ jobs: sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable sudo apt update sudo apt-get -y install gdal-bin libgdal-dev - + - uses: robinraju/release-downloader@v1 with: repository: "JanCaha/cpp-simplerasters" @@ -39,7 +35,7 @@ jobs: fileName: "*.deb" tarBall: false zipBall: false - + - name: Install and remove artifact run: | sudo apt install ./simplerasters*.deb @@ -51,7 +47,7 @@ jobs: submodules: true - name: Configure - run: | + run: | mkdir build cmake \ -S . \ @@ -69,7 +65,7 @@ jobs: -D BUILD_GUI_APP:bool=off - name: Build - run: | + run: | cmake --build build --config Release --target viewshed_shared - name: Run Tests @@ -77,7 +73,7 @@ jobs: run: | cmake --build build --config Release --target build_tests cmake --build build --config Release --target run_tests - + - name: Clean Build run: | rm -rf build @@ -104,7 +100,6 @@ jobs: cmake --build build --config Release --target run_tests Tests-Viewshed-library-with-Qt: - runs-on: ubuntu-latest env: @@ -114,7 +109,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - - name: Update and Upgrade run: | sudo apt update @@ -125,7 +119,7 @@ jobs: sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable sudo apt update sudo apt-get -y install gdal-bin libgdal-dev - + - uses: robinraju/release-downloader@v1 with: repository: "JanCaha/cpp-simplerasters" @@ -133,7 +127,7 @@ jobs: fileName: "*.deb" tarBall: false zipBall: false - + - name: Install and remove artifact run: | sudo apt install ./simplerasters*.deb @@ -145,11 +139,13 @@ jobs: submodules: true - name: Install Qt - run: | - sudo apt install qt6-base-dev qt6-base-dev-tools - + uses: jurplel/install-qt-action@v3 + with: + version: "6.10.*" + host: "linux" + - name: Configure - run: | + run: | cmake \ -S . \ -B build \ @@ -165,7 +161,7 @@ jobs: -D NEEDS_QT:bool=on \ -D BUILD_GUI_APP:bool=on \ -D CMAKE_INSTALL_PREFIX=/usr \ - + - name: Run Tests even with Qt id: unittestsqt run: | @@ -176,4 +172,4 @@ jobs: - name: Test Install run: | cmake --build build --config Release --target all - sudo cmake --build build --config Release --target install \ No newline at end of file + sudo cmake --build build --config Release --target install From 2926862df58dc1e9e59ea9fc81435856f4adaa38 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 16:16:36 +0100 Subject: [PATCH 19/22] use qt 6.9 --- .github/workflows/test_library.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_library.yaml b/.github/workflows/test_library.yaml index c5115584..4dced0d4 100644 --- a/.github/workflows/test_library.yaml +++ b/.github/workflows/test_library.yaml @@ -141,7 +141,7 @@ jobs: - name: Install Qt uses: jurplel/install-qt-action@v3 with: - version: "6.10.*" + version: "6.9.*" host: "linux" - name: Configure From 66cf6dfcd8da229a7075ff197380cc0d12c91609 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 16:25:33 +0100 Subject: [PATCH 20/22] qt 6.7 --- .github/workflows/test_library.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_library.yaml b/.github/workflows/test_library.yaml index 4dced0d4..c369b07e 100644 --- a/.github/workflows/test_library.yaml +++ b/.github/workflows/test_library.yaml @@ -141,7 +141,7 @@ jobs: - name: Install Qt uses: jurplel/install-qt-action@v3 with: - version: "6.9.*" + version: "6.7.*" host: "linux" - name: Configure From 6c7358b24244f0aecfdf7dd51c53ed6cd6d37d9c Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 19:33:25 +0100 Subject: [PATCH 21/22] try another version --- .github/workflows/test_library.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_library.yaml b/.github/workflows/test_library.yaml index c369b07e..03546df4 100644 --- a/.github/workflows/test_library.yaml +++ b/.github/workflows/test_library.yaml @@ -141,7 +141,7 @@ jobs: - name: Install Qt uses: jurplel/install-qt-action@v3 with: - version: "6.7.*" + version: "6.9.0" host: "linux" - name: Configure From bcea49e61f9cae0875195481ea4aa1c155d18443 Mon Sep 17 00:00:00 2001 From: Jan Caha Date: Tue, 17 Feb 2026 19:39:11 +0100 Subject: [PATCH 22/22] qt 6.10.2 --- .github/workflows/create_releases.yaml | 2 +- .github/workflows/test_library.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/create_releases.yaml b/.github/workflows/create_releases.yaml index 17987ae0..e35b068d 100644 --- a/.github/workflows/create_releases.yaml +++ b/.github/workflows/create_releases.yaml @@ -53,7 +53,7 @@ jobs: - name: Install Qt uses: jurplel/install-qt-action@v3 with: - version: "6.9.*" + version: "6.10.2" host: "linux" - name: Install GDAL diff --git a/.github/workflows/test_library.yaml b/.github/workflows/test_library.yaml index 03546df4..9c9e9faa 100644 --- a/.github/workflows/test_library.yaml +++ b/.github/workflows/test_library.yaml @@ -141,7 +141,7 @@ jobs: - name: Install Qt uses: jurplel/install-qt-action@v3 with: - version: "6.9.0" + version: "6.10.2" host: "linux" - name: Configure