diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ec39ff3..ad9ce59 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,10 +7,10 @@ name: CI on: push: branches: - - 2.0 + - master pull_request: branches: - - 2.0 + - master jobs: build: @@ -19,17 +19,13 @@ jobs: fail-fast: true matrix: os: - - ubuntu-22.04 - - ubuntu-20.04 - - windows-2022 - - windows-2019 - - macos-13 - - macos-12 + - ubuntu-latest + - windows-latest + - macos-latest config: - qt_version: "5.15" - - qt_version: "6.3.*" - - qt_version: "6.6.*" + - qt_version: "6.4.*" # Qt 6.5+ requires newer xcode 14.3.1 unavailabe atm steps: - name: Install Qt ${{ matrix.config.qt_version }} with options and default aqtversion @@ -44,6 +40,9 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 + - name: Fetch Git submodule + run: git submodule update --init --recursive + - name: Make sure MSVC is found when Ninja generator is in use if: ${{ runner.os == 'Windows' }} uses: ilammy/msvc-dev-cmd@v1 @@ -56,17 +55,17 @@ jobs: - name: Run tests on Linux (offscreen) if: ${{ runner.os == 'Linux' }} - run: ctest --test-dir ./build-${{ matrix.preset.name }} --output-on-failure + run: ctest --test-dir ./build --output-on-failure env: QT_QPA_PLATFORM: offscreen QT_QUICK_BACKEND: software - name: Run tests on Window/macOS if: ${{ runner.os != 'Linux' }} - run: ctest --test-dir ./build-${{ matrix.preset.name }} --output-on-failure + run: ctest --test-dir ./build --output-on-failure - name: Read tests log when it fails uses: andstor/file-reader-action@v1 if: ${{ failure() && startsWith(matrix.preset.name, 'ci-dev-') }} with: - path: "./build-${{ matrix.preset.name }}/Testing/Temporary/LastTest.log" + path: "./build/Testing/Temporary/LastTest.log" diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a9ac05..fe83573 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,8 @@ project(KDToolBox LANGUAGES CXX) option(KDTOOLBOX_CXX20 "Enabling C++20 tests" OFF) +include(GNUInstallDirs) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -18,7 +20,6 @@ set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE TRUE) set(CMAKE_LINK_DEPENDS_NO_SHARED TRUE) set(QT_REQUIRED_VERSION "5.15.0") -set(QT_VERSION_MAJOR 5) # KDAB CI fails with Qt6 if(NOT DEFINED QT_VERSION_MAJOR) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) endif() @@ -26,6 +27,10 @@ find_package(Qt${QT_VERSION_MAJOR} ${QT_REQUIRED_VERSION} CONFIG REQUIRED Core G set(CMAKE_AUTOMOC ON) +if (MSVC) + add_compile_options(/Zc:__cplusplus) +endif() + add_definitions( -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII diff --git a/cpp/propagate_const/test/CMakeLists.txt b/cpp/propagate_const/test/CMakeLists.txt index e24189a..f85c19b 100644 --- a/cpp/propagate_const/test/CMakeLists.txt +++ b/cpp/propagate_const/test/CMakeLists.txt @@ -6,7 +6,7 @@ # find_package(Qt${QT_VERSION_MAJOR} ${QT_REQUIRED_VERSION} CONFIG REQUIRED Core Test) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(tst_propagate_const_SOURCES tst_propagate_const.cpp) diff --git a/qt/CMakeLists.txt b/qt/CMakeLists.txt index dc25ff4..9eab521 100644 --- a/qt/CMakeLists.txt +++ b/qt/CMakeLists.txt @@ -13,15 +13,20 @@ add_subdirectory(model_view) add_subdirectory(notify_guard) add_subdirectory(pointer_cast) add_subdirectory(qml) -add_subdirectory(qt_fmt) add_subdirectory(qt_hasher) add_subdirectory(singleshot_connect) add_subdirectory(tabWindow) add_subdirectory(ui_watchdog) -add_subdirectory(asan_assert_fail_qt) add_subdirectory(qt6_natvis) +if(LINUX) + add_subdirectory(asan_assert_fail_qt) +endif() + if(QT_VERSION_MAJOR EQUAL 5) # Qt6 has it's own QStringTokenizer add_subdirectory(stringtokenizer) + + # fails to build with with Qt6 + add_subdirectory(qt_fmt) endif() diff --git a/qt/KDSignalThrottler/examples/signalThrottlersDemo/CMakeLists.txt b/qt/KDSignalThrottler/examples/signalThrottlersDemo/CMakeLists.txt index fec2a4c..d5adacb 100644 --- a/qt/KDSignalThrottler/examples/signalThrottlersDemo/CMakeLists.txt +++ b/qt/KDSignalThrottler/examples/signalThrottlersDemo/CMakeLists.txt @@ -4,6 +4,9 @@ # # SPDX-License-Identifier: MIT # + +set(CMAKE_CXX_STANDARD 14) + find_package( Qt${QT_VERSION_MAJOR} ${QT_REQUIRED_VERSION} diff --git a/qt/qt6_natvis/CMakeLists.txt b/qt/qt6_natvis/CMakeLists.txt index fdaef60..80fd351 100644 --- a/qt/qt6_natvis/CMakeLists.txt +++ b/qt/qt6_natvis/CMakeLists.txt @@ -14,6 +14,7 @@ set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core) diff --git a/qt/qt6_natvis/main.cpp b/qt/qt6_natvis/main.cpp index aa06faf..03c3468 100644 --- a/qt/qt6_natvis/main.cpp +++ b/qt/qt6_natvis/main.cpp @@ -10,6 +10,7 @@ #include #include +#include int main(int argc, char *argv[]) { diff --git a/qt/stringtokenizer/tests/qstringtokenizer/tst_qstringtokenizer.cpp b/qt/stringtokenizer/tests/qstringtokenizer/tst_qstringtokenizer.cpp index 298ac78..41ebe18 100644 --- a/qt/stringtokenizer/tests/qstringtokenizer/tst_qstringtokenizer.cpp +++ b/qt/stringtokenizer/tests/qstringtokenizer/tst_qstringtokenizer.cpp @@ -96,8 +96,8 @@ void tst_QStringTokenizer::basics() const QFETCH(const Qt::CaseSensitivity, cs); auto expected = QStringList{ - QStringLiteral(""), QStringLiteral("a"), QStringLiteral("b"), QStringLiteral("c"), - QStringLiteral("d"), QStringLiteral("e"), QStringLiteral(""), + QLatin1String(""), QStringLiteral("a"), QStringLiteral("b"), QStringLiteral("c"), + QStringLiteral("d"), QStringLiteral("e"), QLatin1String(""), }; if (sb & Qt::SkipEmptyParts) expected = skipped(expected);