From 5927449987dffa2d14e658044c037d182b6f9b4a Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Mon, 28 Jul 2025 15:54:44 +0200 Subject: [PATCH 1/8] Remove QRegExp include It's unused. --- src/json_scanner.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/json_scanner.cpp b/src/json_scanner.cpp index eb4ec83..bebfeeb 100644 --- a/src/json_scanner.cpp +++ b/src/json_scanner.cpp @@ -27,7 +27,6 @@ #include #include -#include #include From 60a54a5cab8c45d88e5df56db355bae6b7f8c206 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Mon, 28 Jul 2025 15:55:08 +0200 Subject: [PATCH 2/8] json_parser: do not specify template arguments for QVariant::setValue They're meant to be deduced (and will fail in Qt 6 because of SFINAE). Re-run bison and regenerate the parser. --- src/json_parser.cc | 4 ++-- src/json_parser.yy | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/json_parser.cc b/src/json_parser.cc index 5c1788f..1c8b480 100644 --- a/src/json_parser.cc +++ b/src/json_parser.cc @@ -149,7 +149,7 @@ namespace yy { { if (*yystr == '"') { - std::string yyr; + std::string yyr = ""; char const *yyp = yystr; for (;;) @@ -495,7 +495,7 @@ namespace yy { { QVariantMap* pair = new QVariantMap(); pair->insert((yysemantic_stack_[(3) - (1)]).toString(), (yysemantic_stack_[(3) - (3)])); - (yyval).setValue(pair); + (yyval).setValue(pair); } break; diff --git a/src/json_parser.yy b/src/json_parser.yy index 79e39aa..e93dcc8 100644 --- a/src/json_parser.yy +++ b/src/json_parser.yy @@ -104,7 +104,7 @@ object: CURLY_BRACKET_OPEN CURLY_BRACKET_CLOSE { members: STRING COLON value { QVariantMap* pair = new QVariantMap(); pair->insert($1.toString(), $3); - $$.setValue(pair); + $$.setValue(pair); } | members COMMA STRING COLON value { $$.value()->insert($3.toString(), $5); From 2c80cd42ddb51819d67b2a8d73e003f71a8f1014 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Mon, 28 Jul 2025 15:56:32 +0200 Subject: [PATCH 3/8] serializer: include QIODevice It's used in the file. Include it. --- src/serializer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/serializer.cpp b/src/serializer.cpp index ede97bd..30e89d8 100644 --- a/src/serializer.cpp +++ b/src/serializer.cpp @@ -22,6 +22,7 @@ #include "serializer.h" #include +#include #include #include From d14baa9ef8dbe7584f13d8a3a561467fb258a2d9 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Mon, 28 Jul 2025 15:57:34 +0200 Subject: [PATCH 4/8] cmdline_tester: port to Qt 6 Get rid of QTextCodec (unnecessary); port from QTime to QElapsedTimer. --- tests/cmdline_tester/cmdline_tester.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/tests/cmdline_tester/cmdline_tester.cpp b/tests/cmdline_tester/cmdline_tester.cpp index 81289f1..5b426e5 100644 --- a/tests/cmdline_tester/cmdline_tester.cpp +++ b/tests/cmdline_tester/cmdline_tester.cpp @@ -20,11 +20,10 @@ #include #include +#include #include #include #include -#include -#include #include #include @@ -36,13 +35,8 @@ using namespace QJson; int main(int argc, char *argv[]) { QCoreApplication app (argc, argv); -#if QT_VERSION < QT_VERSION_CHECK(5,0,0) - QTextCodec *codec = QTextCodec::codecForName("UTF-8"); - QTextCodec::setCodecForCStrings(codec); -#endif - - QTime time; - int duration; + QElapsedTimer time; + qint64 duration; CmdLineParser cmd (app.arguments()); From 3c8f89b50fb4fe013fe11c97c9be84168b27b6ec Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Mon, 28 Jul 2025 15:58:18 +0200 Subject: [PATCH 5/8] Tests: port to Qt 6 Remove any conditional code on earlier Qt versions. --- tests/parser/testparser.cpp | 6 ------ tests/qobjecthelper/testqobjecthelper.cpp | 6 ------ tests/scanner/testscanner.cpp | 6 ------ tests/serializer/testserializer.cpp | 6 ------ 4 files changed, 24 deletions(-) diff --git a/tests/parser/testparser.cpp b/tests/parser/testparser.cpp index 80dbd0f..cccf5f4 100644 --- a/tests/parser/testparser.cpp +++ b/tests/parser/testparser.cpp @@ -471,11 +471,5 @@ void TestParser::reuseSameParser() QVERIFY (ok); } -#if QT_VERSION < QT_VERSION_CHECK(5,0,0) -// using Qt4 rather then Qt5 -QTEST_MAIN(TestParser) -#include "moc_testparser.cxx" -#else QTEST_GUILESS_MAIN(TestParser) #include "testparser.moc" -#endif diff --git a/tests/qobjecthelper/testqobjecthelper.cpp b/tests/qobjecthelper/testqobjecthelper.cpp index 2abb9e9..bd258f1 100644 --- a/tests/qobjecthelper/testqobjecthelper.cpp +++ b/tests/qobjecthelper/testqobjecthelper.cpp @@ -116,11 +116,5 @@ void TestQObjectHelper::testQVariant2QObject() QCOMPARE(person.luckyNumber(), luckyNumber); } -#if QT_VERSION < QT_VERSION_CHECK(5,0,0) -// using Qt4 rather then Qt5 -QTEST_MAIN(TestQObjectHelper) -#include "moc_testqobjecthelper.cxx" -#else QTEST_GUILESS_MAIN(TestQObjectHelper) #include "testqobjecthelper.moc" -#endif diff --git a/tests/scanner/testscanner.cpp b/tests/scanner/testscanner.cpp index 07de390..af3e106 100644 --- a/tests/scanner/testscanner.cpp +++ b/tests/scanner/testscanner.cpp @@ -252,11 +252,5 @@ void TestScanner::scanSpecialNumbers_data() { QTest::newRow("-Infinity") << QByteArray("-Infinity") << true << true << false << 1 << 0 << 1 << 9; } -#if QT_VERSION < QT_VERSION_CHECK(5,0,0) -// using Qt4 rather then Qt5 -QTEST_MAIN(TestScanner) -#include "moc_testscanner.cxx" -#else QTEST_GUILESS_MAIN(TestScanner) #include "testscanner.moc" -#endif diff --git a/tests/serializer/testserializer.cpp b/tests/serializer/testserializer.cpp index 31b2db0..a35521e 100644 --- a/tests/serializer/testserializer.cpp +++ b/tests/serializer/testserializer.cpp @@ -639,11 +639,5 @@ void TestSerializer::testEscapeChars_data() QTest::newRow("control chars") << QString(QChar(0x06)) << "\\u0006"; } -#if QT_VERSION < QT_VERSION_CHECK(5,0,0) -// using Qt4 rather then Qt5 -QTEST_MAIN(TestSerializer) -#include "moc_testserializer.cxx" -#else QTEST_GUILESS_MAIN(TestSerializer) #include "testserializer.moc" -#endif From f770f79697f2db4b7821400cd0242895aedd21f9 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Mon, 28 Jul 2025 15:59:20 +0200 Subject: [PATCH 6/8] testserializer: port from QRegExp to QRegularExpression As QRegExp is gone in Qt 6. --- tests/serializer/testserializer.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/serializer/testserializer.cpp b/tests/serializer/testserializer.cpp index a35521e..41f75ff 100644 --- a/tests/serializer/testserializer.cpp +++ b/tests/serializer/testserializer.cpp @@ -272,9 +272,9 @@ void TestSerializer::valueTest( const QVariant& value, const QString& expectedRe QCOMPARE(serialized.isNull(), errorExpected); const QString serializedUnicode = QString::fromUtf8( serialized ); if (!errorExpected) { - QRegExp expected( expectedRegExp ); + QRegularExpression expected( QRegularExpression::anchoredPattern( expectedRegExp ) ); QVERIFY( expected.isValid() ); - QVERIFY2( expected.exactMatch( serializedUnicode ), + QVERIFY2( serializedUnicode.contains( expected ), qPrintable( QString( QLatin1String( "Expected regexp \"%1\" but got \"%2\"." ) ) .arg( expectedRegExp ).arg( serializedUnicode ) ) ); } else { @@ -286,12 +286,12 @@ void TestSerializer::valueTest( const QObject* object, const QString& expectedRe { Serializer serializer; bool ok; - const QByteArray serialized = serializer.serialize( object, &ok); + const QByteArray serialized = serializer.serialize( QVariant::fromValue(object), &ok); QVERIFY(ok); const QString serializedUnicode = QString::fromUtf8( serialized ); - QRegExp expected( expectedRegExp ); + QRegularExpression expected( QRegularExpression::anchoredPattern( expectedRegExp ) ); QVERIFY( expected.isValid() ); - QVERIFY2( expected.exactMatch( serializedUnicode ), + QVERIFY2( serializedUnicode.contains( expected ), qPrintable( QString( QLatin1String( "Expected regexp \"%1\" but got \"%2\"." ) ) .arg( expectedRegExp ).arg( serializedUnicode ) ) ); } From c3530995af5bd0c8369ee4c2359b726166d263de Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Mon, 28 Jul 2025 16:06:45 +0200 Subject: [PATCH 7/8] QObjectHelper: port from QVariant::Type to QMetaType --- src/qobjecthelper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qobjecthelper.cpp b/src/qobjecthelper.cpp index b69f202..3bae5ea 100644 --- a/src/qobjecthelper.cpp +++ b/src/qobjecthelper.cpp @@ -74,7 +74,7 @@ void QObjectHelper::qvariant2qobject(const QVariantMap& variant, QObject* object } QMetaProperty metaproperty = metaobject->property( pIdx ); - QVariant::Type type = metaproperty.type(); + QMetaType type = metaproperty.metaType(); QVariant v( iter.value() ); if ( v.canConvert( type ) ) { v.convert( type ); From e727221b6996d645eb37d96dad940689ede529e5 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Mon, 28 Jul 2025 16:08:01 +0200 Subject: [PATCH 8/8] Buildsystem: port to Qt 6 Qt 4 and 5 have both reached EOL. Port the buildsystem to use Qt 6 and some more modern CMake features while at it. Note: this isn't a comprehensive modernization of the buildsystem, just enough to simplify the code and make it build on Linux and Windows(MSVC). --- CMakeLists.txt | 105 ++++++---------------------- src/CMakeLists.txt | 30 ++++---- tests/CMakeLists.txt | 11 +-- tests/benchmarks/CMakeLists.txt | 19 ++--- tests/cmdline_tester/CMakeLists.txt | 37 ++-------- tests/parser/CMakeLists.txt | 28 ++------ tests/qobjecthelper/CMakeLists.txt | 35 ++-------- tests/scanner/CMakeLists.txt | 29 ++------ tests/serializer/CMakeLists.txt | 28 ++------ 9 files changed, 65 insertions(+), 257 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ad066c..1bb899f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,7 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.22) PROJECT(qjson) -set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII" ) - -# Force cmake 2.8.8 in order to have a decent support of Qt5 -CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8) -CMAKE_POLICY(SET CMP0003 NEW) - -# Do not link against qtmain on Windows -if(POLICY CMP0020) - cmake_policy(SET CMP0020 OLD) -endif() +set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" ) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" ) @@ -17,21 +9,23 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" ) set(CMAKE_INSTALL_NAME_DIR ${LIB_INSTALL_DIR}) +add_compile_definitions("QT_NO_CAST_FROM_ASCII" "DQT_NO_CAST_TO_ASCII") + IF("${CMAKE_BUILD_TYPE}" MATCHES "^Rel.*") - ADD_DEFINITIONS("-DQT_NO_DEBUG_OUTPUT") -ENDIF("${CMAKE_BUILD_TYPE}" MATCHES "^Rel.*") + add_compile_definitions("QT_NO_DEBUG_OUTPUT") +ENDIF() # Ability to disable verbose debug output IF(QJSON_VERBOSE_DEBUG_OUTPUT) - ADD_DEFINITIONS("-DQJSON_VERBOSE_DEBUG_OUTPUT") -endif(QJSON_VERBOSE_DEBUG_OUTPUT) + add_compile_definitions("QJSON_VERBOSE_DEBUG_OUTPUT") +endif() # On Windows debug library should have 'd' postfix. IF (WIN32) SET(CMAKE_DEBUG_POSTFIX "d") elseif (APPLE) set(CMAKE_DEBUG_POSTFIX "_debug") -endif (WIN32) +endif () option(QJSON_BUILD_TESTS "Build tests" OFF) @@ -43,81 +37,22 @@ OPTION(OSX_FRAMEWORK "Build a Mac OS X Framework") # Allow to use shared Qt when compiling static version of QJSON. # Has effect only when BUILD_SHARED_LIBS is OFF. option(LINK_SHARED_QT "Force to link with shared Qt" OFF) -option(QT4_BUILD "Force building with Qt4 even if Qt5 is found" OFF) SET(FRAMEWORK_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/Library/Frameworks" CACHE PATH "Where to place qjson.framework if OSX_FRAMEWORK is selected") -if(QT_QMAKE_EXECUTABLE AND EXISTS ${QT_QMAKE_EXECUTABLE}) - execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_VERSION OUTPUT_VARIABLE QT_VERSION) -endif() - -if(QT_VERSION) - if(QT_VERSION MATCHES "^4\\.") - set(QT4_BUILD_DEFAULT ON) - else() - set(QT4_BUILD_DEFAULT OFF) - endif() -else() - set(QT4_BUILD_DEFAULT ON) -endif() - -set(QT4_BUILD ${QT4_BUILD_DEFAULT}) - -IF (NOT QT4_BUILD) - FIND_PACKAGE( Qt5 COMPONENTS Widgets REQUIRED QUIET ) -ENDIF() +find_package(Qt6 CONFIG REQUIRED COMPONENTS Core) -IF (Qt5Core_FOUND) - MESSAGE ("Qt5 found") - - INCLUDE_DIRECTORIES(${Qt5Core_INCLUDE_DIRS}) - ADD_DEFINITIONS(${Qt5Core_DEFINITIONS}) - SET(PC_Requires "Qt5Core") - set(QJSON_SUFFIX "-qt5") - # Tell CMake to run moc when necessary: - set(CMAKE_AUTOMOC ON) - # As moc files are generated in the binary dir, tell CMake - # to always look for includes there: - set(CMAKE_INCLUDE_CURRENT_DIR ON) - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_USE_QSTRINGBUILDER" ) - MESSAGE ("Enable QStringBuilder") -ELSE() - MESSAGE ("Qt5 not found, searching for Qt4") - - # Don't use absolute path in qjson-targets-*.cmake - # (This will have no effect with CMake < 2.8) - # Workaround for no stdlib.h error. In this case it must be used with - # -DQT_INCLUDE_DIRS_NO_SYSTEM=ON. So cmake must be invoked with - # -DQT_USE_IMPORTED_TARGETS=OFF -DQT_INCLUDE_DIRS_NO_SYSTEM=ON - # See https://bugzilla.redhat.com/show_bug.cgi?id=1470809 for details - OPTION(QT_USE_IMPORTED_TARGETS "Use imported targets" ON) - - # Find Qt4 - FIND_PACKAGE( Qt4 4.5 REQUIRED QtCore) - # QStringBuilder is supported since Qt 4.8 for both QString and QByteArray - IF (NOT (${QT_VERSION_MINOR} STRLESS "8")) - MESSAGE ("Enable QStringBuilder") - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_USE_QSTRINGBUILDER" ) - ELSE() - MESSAGE ("Disable QStringBuilder") - ENDIF() - - # Ensure to be linked with static Qt library on Widnows - IF(WIN32 AND NOT BUILD_SHARED_LIBS AND NOT LINK_SHARED_QT) - STRING(REPLACE "-DQT_DLL" "" QT_DEFINITIONS "${QT_DEFINITIONS}") - SET(QT_DEFINITIONS ${QT_DEFINITIONS} "-DQT_NODLL") - ENDIF() - - # Include the cmake file needed to use qt4 - INCLUDE( ${QT_USE_FILE} ) - SET(PC_Requires "QtCore") -ENDIF() - -IF (NOT WIN32) - SET( QT_DONT_USE_QTGUI TRUE ) -ENDIF() +set(QJSON_SUFFIX "-qt6") +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) +add_compile_definitions("QT_USE_QSTRINGBUILDER") +MESSAGE("Enable QStringBuilder") +# IF (NOT WIN32) +# SET( QT_DONT_USE_QTGUI TRUE ) +# ENDIF() #add extra search paths for libraries and includes SET (LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) @@ -126,7 +61,7 @@ SET (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The direc SET (CMAKECONFIG_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${CMAKE_PROJECT_NAME}${QJSON_SUFFIX}" CACHE PATH "Directory where to install QJSONConfig.cmake") set(QJSON_LIB_MAJOR_VERSION "0") -set(QJSON_LIB_MINOR_VERSION "9") +set(QJSON_LIB_MINOR_VERSION "10") set(QJSON_LIB_PATCH_VERSION "0") set(QJSON_LIB_VERSION_STRING "${QJSON_LIB_MAJOR_VERSION}.${QJSON_LIB_MINOR_VERSION}.${QJSON_LIB_PATCH_VERSION}") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index df607e7..6db840d 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -13,29 +13,22 @@ set(qjson_MOC_HDRS serializerrunnable.h ) -IF (NOT Qt5Core_FOUND) - qt4_wrap_cpp(qjson_MOC_SRCS ${qjson_MOC_HDRS}) -ENDIF() - set (qjson_SRCS parser.cpp qobjecthelper.cpp json_scanner.cpp json_parser.cc parserrunnable.cpp serializer.cpp serializerrunnable.cpp) set (qjson_HEADERS parser.h parserrunnable.h qobjecthelper.h serializer.h serializerrunnable.h qjson_export.h) # Required to use the intree copy of FlexLexer.h -INCLUDE_DIRECTORIES(.) +# INCLUDE_DIRECTORIES(.) # Special hack to fix scanner test compilation on Windows # JsonScanner class is not for export. So need to make static # lib what can be compiled against scanner test. if(WIN32 AND QJSON_BUILD_TESTS AND BUILD_SHARED_LIBS) add_library(qjson_scanner STATIC json_scanner.cpp) + target_link_libraries(qjson_scanner Qt::Core) endif() add_library (qjson${QJSON_SUFFIX} ${qjson_SRCS} ${qjson_MOC_SRCS} ${qjson_HEADERS}) -IF (Qt5Core_FOUND) - target_link_libraries( qjson${QJSON_SUFFIX} ${Qt5Core_LIBRARIES}) -ELSE() - target_link_libraries( qjson${QJSON_SUFFIX} ${QT_LIBRARIES}) -ENDIF() +target_link_libraries(qjson${QJSON_SUFFIX} Qt::Core) if(NOT ANDROID) set_target_properties(qjson${QJSON_SUFFIX} PROPERTIES @@ -65,12 +58,13 @@ INSTALL(TARGETS qjson${QJSON_SUFFIX} EXPORT qjson-export PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR}/qjson${QJSON_SUFFIX} ) -if(MSVC) - get_target_property(LOCATION qjson LOCATION_DEBUG) - string(REGEX REPLACE "\\.[^.]*$" ".pdb" LOCATION "${LOCATION}") - install(FILES ${LOCATION} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin CONFIGURATIONS Debug) +# TODO double check +# if(MSVC) +# get_target_property(LOCATION qjson${QJSON_SUFFIX} LOCATION_DEBUG) +# string(REGEX REPLACE "\\.[^.]*$" ".pdb" LOCATION "${LOCATION}") +# install(FILES ${LOCATION} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin CONFIGURATIONS Debug) - get_target_property(LOCATION qjson LOCATION_RELWITHDEBINFO) - string(REGEX REPLACE "\\.[^.]*$" ".pdb" LOCATION "${LOCATION}") - install(FILES ${LOCATION} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin CONFIGURATIONS RelWithDebInfo) -endif(MSVC) +# get_target_property(LOCATION qjson${QJSON_SUFFIX} LOCATION_RELWITHDEBINFO) +# string(REGEX REPLACE "\\.[^.]*$" ".pdb" LOCATION "${LOCATION}") +# install(FILES ${LOCATION} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin CONFIGURATIONS RelWithDebInfo) +# endif(MSVC) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1f69ca2..a43e93e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,12 +1,4 @@ -IF (Qt5Core_FOUND) - FIND_PACKAGE( Qt5Test REQUIRED ) - - INCLUDE_DIRECTORIES(${Qt5Test_INCLUDE_DIRS}) - ADD_DEFINITIONS(${Qt5Test_DEFINITIONS}) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Test_EXECUTABLE_COMPILE_FLAGS}") - - SET (TEST_LIBRARIES ${Qt5Test_LIBRARIES}) -ENDIF() +find_package(Qt6 CONFIG REQUIRED COMPONENTS Core Widgets Test) macro(add_unittest DESCRIPTION) add_test(NAME "${DESCRIPTION}" @@ -15,7 +7,6 @@ macro(add_unittest DESCRIPTION) ) endmacro() - ADD_SUBDIRECTORY(cmdline_tester) ADD_SUBDIRECTORY(parser) ADD_SUBDIRECTORY(scanner) diff --git a/tests/benchmarks/CMakeLists.txt b/tests/benchmarks/CMakeLists.txt index 9132309..b802a25 100644 --- a/tests/benchmarks/CMakeLists.txt +++ b/tests/benchmarks/CMakeLists.txt @@ -1,15 +1,3 @@ -##### Probably don't want to edit below this line ##### - -SET( QT_USE_QTTEST TRUE ) - -INCLUDE(AddFileDependencies) - -# Include the library include directories, and the current build directory (moc) -INCLUDE_DIRECTORIES( - ../../include - ${CMAKE_CURRENT_BINARY_DIR} -) - SET( UNIT_TESTS parsingbenchmark qlocalevsstrtod_l @@ -25,10 +13,13 @@ FOREACH(test ${UNIT_TESTS}) TARGET_LINK_LIBRARIES( ${test} - ${QT_LIBRARIES} - ${TEST_LIBRARIES} + Qt::Core + Qt::Test qjson${QJSON_SUFFIX} ) + + target_include_directories(${test} PRIVATE ../../include) + if (QJSON_TEST_OUTPUT STREQUAL "xml") # produce XML output add_test( ${test} ${test} -xml -o ${test}.tml ) diff --git a/tests/cmdline_tester/CMakeLists.txt b/tests/cmdline_tester/CMakeLists.txt index 3d2054a..39206ea 100644 --- a/tests/cmdline_tester/CMakeLists.txt +++ b/tests/cmdline_tester/CMakeLists.txt @@ -1,42 +1,15 @@ -##### Probably don't want to edit below this line ##### - -IF (WIN32 AND Qt5Core_FOUND) - FIND_PACKAGE( Qt5Widgets REQUIRED ) - - INCLUDE_DIRECTORIES(${Qt5Widgets_INCLUDE_DIRS}) - ADD_DEFINITIONS(${Qt5Widgets_DEFINITIONS}) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") -ENDIF() - -IF (NOT Qt5Core_FOUND) - # Use it - INCLUDE( ${QT_USE_FILE} ) -ENDIF() - -INCLUDE(AddFileDependencies) - -# Include the library include directories, and the current build directory (moc) -INCLUDE_DIRECTORIES( - ../../include - ${CMAKE_CURRENT_BINARY_DIR} -) - ADD_EXECUTABLE( cmdline_tester cmdline_tester.cpp cmdlineparser.cpp ) +target_include_directories(cmdline_tester PRIVATE ../../include) + TARGET_LINK_LIBRARIES( cmdline_tester - ${QT_LIBRARIES} + Qt::Core + Qt::Widgets + Qt::Test qjson${QJSON_SUFFIX} ) - -if(WIN32) - target_link_libraries( - cmdline_tester - ${QT_QTGUI_LIBRARY} - ${Qt5Widgets_LIBRARIES} - ) -endif() diff --git a/tests/parser/CMakeLists.txt b/tests/parser/CMakeLists.txt index e5eca91..79f5aab 100644 --- a/tests/parser/CMakeLists.txt +++ b/tests/parser/CMakeLists.txt @@ -1,20 +1,3 @@ -##### Probably don't want to edit below this line ##### - -SET( QT_USE_QTTEST TRUE ) - -IF (NOT Qt5Core_FOUND) - # Use it - INCLUDE( ${QT_USE_FILE} ) -ENDIF() - -INCLUDE(AddFileDependencies) - -# Include the library include directories, and the current build directory (moc) -INCLUDE_DIRECTORIES( - ../../include - ${CMAKE_CURRENT_BINARY_DIR} -) - SET( UNIT_TESTS testparser ) @@ -22,21 +5,20 @@ SET( UNIT_TESTS # Build the tests FOREACH(test ${UNIT_TESTS}) MESSAGE(STATUS "Building ${test}") - IF (NOT Qt5Core_FOUND) - QT4_WRAP_CPP(MOC_SOURCE ${test}.cpp) - ENDIF() ADD_EXECUTABLE( ${test} ${test}.cpp ) - ADD_FILE_DEPENDENCIES(${test}.cpp ${MOC_SOURCE}) TARGET_LINK_LIBRARIES( ${test} - ${QT_LIBRARIES} - ${TEST_LIBRARIES} + Qt::Core + Qt::Test qjson${QJSON_SUFFIX} ) + + target_include_directories(${test} PRIVATE ../../include) + if (QJSON_TEST_OUTPUT STREQUAL "xml") # produce XML output add_unittest(${test} ${test} -xml -o ${test}.tml) diff --git a/tests/qobjecthelper/CMakeLists.txt b/tests/qobjecthelper/CMakeLists.txt index 5ba9ff7..01f3aa9 100644 --- a/tests/qobjecthelper/CMakeLists.txt +++ b/tests/qobjecthelper/CMakeLists.txt @@ -1,29 +1,9 @@ -##### Probably don't want to edit below this line ##### - -SET( QT_USE_QTTEST TRUE ) - -IF (NOT Qt5Core_FOUND) - # Use it - INCLUDE( ${QT_USE_FILE} ) -ENDIF() - -INCLUDE(AddFileDependencies) - -# Include the library include directories, and the current build directory (moc) -INCLUDE_DIRECTORIES( - ../../include - ${CMAKE_CURRENT_BINARY_DIR} -) - -SET (qjson_test_support_SRCS person.cpp) -IF (NOT Qt5Core_FOUND) - QT4_WRAP_CPP(qjson_test_support_MOC_SRCS person.h) -ENDIF() +SET (qjson_test_support_SRCS person.cpp person.h) ADD_LIBRARY (qjson_test_support STATIC ${qjson_test_support_SRCS} ${qjson_test_support_MOC_SRCS}) -target_link_libraries(qjson_test_support ${QT_LIBRARIES} ${Qt5Core_LIBRARIES}) +target_link_libraries(qjson_test_support Qt::Core) SET( UNIT_TESTS testqobjecthelper @@ -32,22 +12,21 @@ SET( UNIT_TESTS # Build the tests FOREACH(test ${UNIT_TESTS}) MESSAGE(STATUS "Building ${test}") - IF (NOT Qt5Core_FOUND) - QT4_WRAP_CPP(MOC_SOURCE ${test}.cpp) - ENDIF() ADD_EXECUTABLE( ${test} ${test}.cpp ) - ADD_FILE_DEPENDENCIES(${test}.cpp ${MOC_SOURCE}) TARGET_LINK_LIBRARIES( ${test} - ${QT_LIBRARIES} - ${TEST_LIBRARIES} + Qt::Core + Qt::Test qjson${QJSON_SUFFIX} qjson_test_support ) + + target_include_directories(${test} PRIVATE ../../include) + if (QJSON_TEST_OUTPUT STREQUAL "xml") # produce XML output add_unittest(${test} ${test} -xml -o ${test}.tml) diff --git a/tests/scanner/CMakeLists.txt b/tests/scanner/CMakeLists.txt index e66a62e..bb80836 100644 --- a/tests/scanner/CMakeLists.txt +++ b/tests/scanner/CMakeLists.txt @@ -1,21 +1,3 @@ -##### Probably don't want to edit below this line ##### - -SET( QT_USE_QTTEST TRUE ) - -IF (NOT Qt5Core_FOUND) - # Use it - INCLUDE( ${QT_USE_FILE} ) -ENDIF() - -INCLUDE(AddFileDependencies) - -# Include the library include directories, and the current build directory (moc) -INCLUDE_DIRECTORIES( - ../../src - ../../include - ${CMAKE_CURRENT_BINARY_DIR} -) - SET( UNIT_TESTS testscanner ) @@ -23,9 +5,6 @@ SET( UNIT_TESTS # Build the tests FOREACH(test ${UNIT_TESTS}) MESSAGE(STATUS "Building ${test}") - IF (NOT Qt5Core_FOUND) - QT4_WRAP_CPP(MOC_SOURCE ${test}.cpp) - ENDIF() ADD_EXECUTABLE( ${test} ${test}.cpp @@ -35,14 +14,16 @@ FOREACH(test ${UNIT_TESTS}) set(QJSON_SCANNER qjson_scanner) endif() - ADD_FILE_DEPENDENCIES(${test}.cpp ${MOC_SOURCE}) TARGET_LINK_LIBRARIES( ${test} - ${QT_LIBRARIES} - ${TEST_LIBRARIES} + Qt::Core + Qt::Test qjson${QJSON_SUFFIX} ${QJSON_SCANNER} ) + + target_include_directories(${test} PRIVATE ../../src ../../include) + if (QJSON_TEST_OUTPUT STREQUAL "xml") # produce XML output add_unittest(${test} ${test} -xml -o ${test}.tml) diff --git a/tests/serializer/CMakeLists.txt b/tests/serializer/CMakeLists.txt index d6a6cb7..4663ddd 100644 --- a/tests/serializer/CMakeLists.txt +++ b/tests/serializer/CMakeLists.txt @@ -1,20 +1,3 @@ -##### Probably don't want to edit below this line ##### - -SET( QT_USE_QTTEST TRUE ) - -IF (NOT Qt5Core_FOUND) - # Use it - INCLUDE( ${QT_USE_FILE} ) -ENDIF() - -INCLUDE(AddFileDependencies) - -# Include the library include directories, and the current build directory (moc) -INCLUDE_DIRECTORIES( - ../../include - ${CMAKE_CURRENT_BINARY_DIR} -) - SET( UNIT_TESTS testserializer ) @@ -22,21 +5,20 @@ SET( UNIT_TESTS # Build the tests FOREACH(test ${UNIT_TESTS}) MESSAGE(STATUS "Building ${test}") - IF (NOT Qt5Core_FOUND) - QT4_WRAP_CPP(MOC_SOURCE ${test}.cpp) - ENDIF() ADD_EXECUTABLE( ${test} ${test}.cpp ) - ADD_FILE_DEPENDENCIES(${test}.cpp ${MOC_SOURCE}) TARGET_LINK_LIBRARIES( ${test} - ${QT_LIBRARIES} - ${TEST_LIBRARIES} + Qt::Core + Qt::Test qjson${QJSON_SUFFIX} ) + + target_include_directories(${test} PRIVATE ../../include) + if (QJSON_TEST_OUTPUT STREQUAL "xml") # produce XML output add_unittest(${test} ${test} -xml -o ${test}.tml)