mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 08:20:18 -06:00
Tests: Add support for testing Qt6
The minimum CMake version for Qt6 is 3.16, so all the calls to cmake_minimum_required() are updated here to enforce that minimum. This will avoid any CMake version-related warnings from Qt. Avoid hard-coding Qt5 where the tests could now be using Qt5 or Qt6. Fixes: #22188
This commit is contained in:
@@ -56,7 +56,7 @@
|
||||
# Test directories.
|
||||
- build/Tests/CTest*
|
||||
- build/Tests/Find*
|
||||
- build/Tests/Qt5*
|
||||
- build/Tests/Qt*
|
||||
- build/Tests/RunCMake/
|
||||
- build/Tests/CMakeOnly/
|
||||
- build/Tests/CMakeTests/
|
||||
|
||||
@@ -257,6 +257,13 @@ if(BUILD_TESTING)
|
||||
#---------------------------------------------------------------------------
|
||||
# Add tests below here.
|
||||
|
||||
if(NOT DEFINED CMake_TEST_Qt6)
|
||||
set(CMake_TEST_Qt6 1)
|
||||
endif()
|
||||
if(CMake_TEST_Qt6)
|
||||
find_package(Qt6 COMPONENTS Core Widgets QUIET NO_MODULE)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMake_TEST_Qt5)
|
||||
set(CMake_TEST_Qt5 1)
|
||||
endif()
|
||||
@@ -1384,6 +1391,9 @@ if(BUILD_TESTING)
|
||||
)
|
||||
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/QtAutomocNoQt")
|
||||
|
||||
if(CMake_TEST_Qt6 AND Qt6Widgets_FOUND)
|
||||
add_subdirectory(Qt6Autogen)
|
||||
endif()
|
||||
if(CMake_TEST_Qt5 AND Qt5Widgets_FOUND)
|
||||
add_subdirectory(Qt5Autogen)
|
||||
endif()
|
||||
|
||||
8
Tests/Qt6Autogen/CMakeLists.txt
Normal file
8
Tests/Qt6Autogen/CMakeLists.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
# Set Qt test version and include the Autogen test macros
|
||||
set(QT_TEST_VERSION 6)
|
||||
include("../QtAutogen/TestMacros.cmake")
|
||||
|
||||
# Common tests
|
||||
include("../QtAutogen/Tests.cmake")
|
||||
|
||||
set(TEST_BUILD_DIRS "${TEST_BUILD_DIRS}" PARENT_SCOPE)
|
||||
@@ -21,27 +21,27 @@ if (QT_TEST_VERSION EQUAL 4)
|
||||
qt4_generate_moc(${ARGN})
|
||||
endmacro()
|
||||
|
||||
elseif(QT_TEST_VERSION EQUAL 5)
|
||||
elseif(QT_TEST_VERSION GREATER_EQUAL 5)
|
||||
|
||||
find_package(Qt5Core REQUIRED)
|
||||
find_package(Qt${QT_TEST_VERSION}Core REQUIRED)
|
||||
|
||||
set(QT_QTCORE_TARGET Qt5::Core)
|
||||
set(QT_LIBRARIES Qt5::Core)
|
||||
set(QT_QTCORE_TARGET Qt${QT_TEST_VERSION}::Core)
|
||||
set(QT_LIBRARIES Qt${QT_TEST_VERSION}::Core)
|
||||
|
||||
# Include directories
|
||||
include_directories(${Qt5Core_INCLUDE_DIRS})
|
||||
include_directories(${Qt${QT_TEST_VERSION}Core_INCLUDE_DIRS})
|
||||
|
||||
# Definitions
|
||||
if(Qt5_POSITION_INDEPENDENT_CODE AND CMAKE_CXX_COMPILE_OPTIONS_PIC)
|
||||
if(Qt${QT_TEST_VERSION}_POSITION_INDEPENDENT_CODE AND CMAKE_CXX_COMPILE_OPTIONS_PIC)
|
||||
add_definitions(${CMAKE_CXX_COMPILE_OPTIONS_PIC})
|
||||
endif()
|
||||
|
||||
# Qt macros
|
||||
macro(qtx_wrap_cpp)
|
||||
qt5_wrap_cpp(${ARGN})
|
||||
cmake_language(CALL qt${QT_TEST_VERSION}_wrap_cpp ${ARGN})
|
||||
endmacro()
|
||||
macro(qtx_generate_moc)
|
||||
qt5_generate_moc(${ARGN})
|
||||
cmake_language(CALL qt${QT_TEST_VERSION}_generate_moc ${ARGN})
|
||||
endmacro()
|
||||
|
||||
else()
|
||||
|
||||
@@ -21,27 +21,27 @@ if (QT_TEST_VERSION EQUAL 4)
|
||||
qt4_generate_moc(${ARGN})
|
||||
endmacro()
|
||||
|
||||
elseif(QT_TEST_VERSION EQUAL 5)
|
||||
elseif(QT_TEST_VERSION GREATER_EQUAL 5)
|
||||
|
||||
find_package(Qt5Widgets REQUIRED)
|
||||
find_package(Qt${QT_TEST_VERSION}Widgets REQUIRED)
|
||||
|
||||
set(QT_QTCORE_TARGET Qt5::Core)
|
||||
set(QT_LIBRARIES Qt5::Widgets)
|
||||
set(QT_QTCORE_TARGET Qt${QT_TEST_VERSION}::Core)
|
||||
set(QT_LIBRARIES Qt${QT_TEST_VERSION}::Widgets)
|
||||
|
||||
# Include directories
|
||||
include_directories(${Qt5Widgets_INCLUDE_DIRS})
|
||||
include_directories(${Qt${QT_TEST_VERSION}Widgets_INCLUDE_DIRS})
|
||||
|
||||
# Definitions
|
||||
if(Qt5_POSITION_INDEPENDENT_CODE AND CMAKE_CXX_COMPILE_OPTIONS_PIC)
|
||||
if(Qt${QT_TEST_VERSION}_POSITION_INDEPENDENT_CODE AND CMAKE_CXX_COMPILE_OPTIONS_PIC)
|
||||
add_definitions(${CMAKE_CXX_COMPILE_OPTIONS_PIC})
|
||||
endif()
|
||||
|
||||
# Qt macros
|
||||
macro(qtx_wrap_cpp)
|
||||
qt5_wrap_cpp(${ARGN})
|
||||
cmake_language(CALL qt${QT_TEST_VERSION}_wrap_cpp ${ARGN})
|
||||
endmacro()
|
||||
macro(qtx_generate_moc)
|
||||
qt5_generate_moc(${ARGN})
|
||||
cmake_language(CALL qt${QT_TEST_VERSION}_generate_moc ${ARGN})
|
||||
endmacro()
|
||||
|
||||
else()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.11)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(AutogenOriginDependsOff)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(AutogenOriginDependsOn)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(AutogenTargetDepends)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(Complex)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
@@ -16,6 +16,8 @@ add_library(privateSlot OBJECT private_slot.cpp)
|
||||
# Pass Qt compiler features to targets that don't link against Qt
|
||||
target_compile_features(codeeditorLib PRIVATE ${QT_COMPILE_FEATURES})
|
||||
target_compile_features(privateSlot PRIVATE ${QT_COMPILE_FEATURES})
|
||||
target_link_libraries(codeeditorLib PRIVATE ${QT_LIBRARIES})
|
||||
target_link_libraries(privateSlot PRIVATE ${QT_LIBRARIES})
|
||||
|
||||
configure_file(generated_resource.qrc.in generated_resource.qrc @ONLY)
|
||||
add_custom_command(
|
||||
|
||||
@@ -70,7 +70,11 @@ int CodeEditor::lineNumberAreaWidth()
|
||||
++digits;
|
||||
}
|
||||
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
|
||||
int space = 3 + fontMetrics().horizontalAdvance(QLatin1Char('9')) * digits;
|
||||
#else
|
||||
int space = 3 + fontMetrics().width(QLatin1Char('9')) * digits;
|
||||
#endif
|
||||
|
||||
return space;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.12)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(GlobalAutogenTarget)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -74,6 +74,7 @@ execute_process(
|
||||
-T "${CMAKE_GENERATOR_TOOLSET}"
|
||||
"-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
WORKING_DIRECTORY "${GAT_BDIR}"
|
||||
OUTPUT_VARIABLE output
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.12)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(GAT)
|
||||
include("../../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -9,7 +9,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
# Disable ORIGN_DEPENDS and enable AUTOGEN global targets
|
||||
# Disable ORIGIN_DEPENDS and enable AUTOGEN global targets
|
||||
set(CMAKE_AUTOGEN_ORIGIN_DEPENDS OFF)
|
||||
set(CMAKE_GLOBAL_AUTOGEN_TARGET ON)
|
||||
set(CMAKE_GLOBAL_AUTORCC_TARGET ON)
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MacOsFW)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
find_package(Qt5Test REQUIRED)
|
||||
find_package(Qt${QT_TEST_VERSION}Test REQUIRED)
|
||||
|
||||
if(QT_TEST_VERSION EQUAL 5)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
elseif(QT_TEST_VERSION EQUAL 6)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported Qt version: ${QT_TEST_VERSION}")
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output/bin)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output/lib)
|
||||
set(CMAKE_INSTALL_NAME_DIR ${CMAKE_BINARY_DIR}/output/lib)
|
||||
|
||||
if(POLICY CMP0042) # in CMake 3.0.0+
|
||||
set (CMAKE_MACOSX_RPATH OFF) # otherwise ON by default
|
||||
endif(POLICY CMP0042)
|
||||
|
||||
if(POLICY CMP0068) # in CMake 3.9+
|
||||
cmake_policy(SET CMP0068 NEW)
|
||||
endif(POLICY CMP0068)
|
||||
set (CMAKE_MACOSX_RPATH OFF) # otherwise ON by default
|
||||
cmake_policy(SET CMP0068 NEW)
|
||||
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(test)
|
||||
|
||||
@@ -9,7 +9,7 @@ set(MACOS_FW_LIB_HDRS
|
||||
include_directories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${Qt5Core_INCLUDE_DIRS}
|
||||
${Qt${QT_TEST_VERSION}Core_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
add_library(macos_fw_lib SHARED
|
||||
@@ -28,6 +28,4 @@ set_target_properties(macos_fw_lib PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
PUBLIC_HEADER "${MACOS_FW_LIB_HDRS}"
|
||||
)
|
||||
target_link_libraries(macos_fw_lib
|
||||
Qt5::Core
|
||||
)
|
||||
target_link_libraries(macos_fw_lib PRIVATE ${QT_QTCORE_TARGET})
|
||||
|
||||
@@ -4,16 +4,16 @@ include_directories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../src
|
||||
)
|
||||
include_directories(SYSTEM
|
||||
${Qt5Core_INCLUDE_DIRS}
|
||||
${Qt5Widgets_INCLUDE_DIRS}
|
||||
${Qt${QT_TEST_VERSION}Core_INCLUDE_DIRS}
|
||||
${Qt${QT_TEST_VERSION}Widgets_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
set(testname AutomocMacosFWLib)
|
||||
add_executable(${testname} testMacosFWLib.cpp)
|
||||
set_target_properties(${testname} PROPERTIES AUTOMOC TRUE)
|
||||
target_link_libraries(${testname}
|
||||
Qt5::Core
|
||||
Qt5::Widgets
|
||||
Qt5::Test
|
||||
target_link_libraries(${testname} PRIVATE
|
||||
Qt${QT_TEST_VERSION}::Core
|
||||
Qt${QT_TEST_VERSION}::Widgets
|
||||
Qt${QT_TEST_VERSION}::Test
|
||||
macos_fw_lib
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(ManySources)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocCMP0071)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
|
||||
# *Generate* files
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_policy(SET CMP0071 OLD)
|
||||
|
||||
# *Generate* files
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocCMP0100)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
cmake_policy(SET CMP0100 NEW)
|
||||
|
||||
add_executable(mocCMP0100New
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
cmake_policy(SET CMP0100 OLD)
|
||||
|
||||
# Generate moc files externally.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocInclude)
|
||||
get_filename_component(CS_REAL ${CMAKE_CURRENT_SOURCE_DIR} REALPATH)
|
||||
include("${CS_REAL}/../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocIncludeSymlink)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -63,6 +63,7 @@ macro(buildMocInclude sourceDir binaryDir)
|
||||
CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_AUTOMOC_PATH_PREFIX=ON"
|
||||
"-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocMacroName)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocOnly)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocOptions)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
cmake_minimum_required(VERSION 3.11)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocOsMacros)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
# Tests if moc processes Q_OS_XXX macros
|
||||
|
||||
message( "Qt5Core_VERSION: ${Qt5Core_VERSION}" )
|
||||
message( "Qt${QT_TEST_VERSION}Core_VERSION: ${Qt${QT_TEST_VERSION}Core_VERSION}" )
|
||||
message(
|
||||
"CMAKE_CXX_COMPILER_PREDEFINES_COMMAND: "
|
||||
${CMAKE_CXX_COMPILER_PREDEFINES_COMMAND} )
|
||||
@@ -12,7 +12,7 @@ message(
|
||||
# On some platforms (e.g. MAC) Q_OS_XXX requires moc to include moc_predefs.h
|
||||
# which is supported since Qt 5.8 and requires
|
||||
# CMAKE_CXX_COMPILER_PREDEFINES_COMMAND to be defined.
|
||||
if( ( ${Qt5Core_VERSION} VERSION_GREATER_EQUAL "5.8" ) AND
|
||||
if( ( ${Qt${QT_TEST_VERSION}Core_VERSION} VERSION_GREATER_EQUAL "5.8" ) AND
|
||||
DEFINED CMAKE_CXX_COMPILER_PREDEFINES_COMMAND
|
||||
)
|
||||
message( "Test enabled!" )
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocSkipSource)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(ObjectLibrary)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -11,7 +11,7 @@ add_subdirectory(a)
|
||||
# Object library b defined locally
|
||||
include_directories(b)
|
||||
add_library(b OBJECT b/classb.cpp)
|
||||
target_compile_features(b PRIVATE ${QT_COMPILE_FEATURES})
|
||||
target_link_libraries(b PRIVATE ${QT_LIBRARIES})
|
||||
|
||||
# Executable with OBJECT library generator expressions
|
||||
add_executable(someProgram main.cpp $<TARGET_OBJECTS:a> $<TARGET_OBJECTS:b>)
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
add_library(a OBJECT classa.cpp)
|
||||
target_compile_features(a PRIVATE ${QT_COMPILE_FEATURES})
|
||||
target_link_libraries(a PRIVATE ${QT_LIBRARIES})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(Parallel)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(Parallel1)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(Parallel2)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(Parallel3)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(Parallel4)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(ParallelAUTO)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RccEmpty)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RccOffMocLibrary)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -9,9 +9,7 @@ include("../AutogenCoreTest.cmake")
|
||||
add_library(empty STATIC empty.cpp not_generated_file.qrc)
|
||||
set_target_properties(empty PROPERTIES AUTORCC OFF)
|
||||
set_target_properties(empty PROPERTIES AUTOMOC TRUE)
|
||||
target_link_libraries(empty no_link_language)
|
||||
target_link_libraries(empty PRIVATE no_link_language ${QT_LIBRARIES})
|
||||
add_library(no_link_language STATIC empty.h)
|
||||
set_target_properties(no_link_language PROPERTIES AUTOMOC TRUE)
|
||||
# Pass Qt compiler features to targets that don't link against Qt
|
||||
target_compile_features(no_link_language PRIVATE ${QT_COMPILE_FEATURES})
|
||||
target_compile_features(empty PRIVATE ${QT_COMPILE_FEATURES})
|
||||
target_link_libraries(no_link_language PRIVATE ${QT_LIBRARIES})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RccOnly)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RccSkipSource)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RerunMocBasic)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -63,6 +63,7 @@ execute_process(
|
||||
${_D_CMAKE_GENERATOR_INSTANCE}
|
||||
"-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
RESULT_VARIABLE exit_code
|
||||
OUTPUT_VARIABLE output
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocBasic)
|
||||
include("../../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# This test checks whether adding a source file to the project triggers an AUTOMOC re-run.
|
||||
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RerunMocOnAddFile)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -64,6 +64,7 @@ try_compile(MOC_RERUN
|
||||
MocOnAddFile
|
||||
CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocOnAddFile)
|
||||
include("@CMAKE_CURRENT_LIST_DIR@/../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# This test checks whether a missing dependency of the moc output triggers an AUTOMOC re-run.
|
||||
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RerunMocOnMissingDependency)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -13,10 +13,10 @@ add_executable(exe "${main_source}")
|
||||
set(testProjectTemplateDir "${CMAKE_CURRENT_SOURCE_DIR}/MocOnMissingDependency")
|
||||
set(testProjectSrc "${CMAKE_CURRENT_BINARY_DIR}/MocOnMissingDependency")
|
||||
set(testProjectBinDir "${CMAKE_CURRENT_BINARY_DIR}/MocOnMissingDependency-build")
|
||||
if(DEFINED Qt5Core_VERSION AND Qt5Core_VERSION VERSION_GREATER_EQUAL "5.15.0")
|
||||
set(moc_depfiles_supported TRUE)
|
||||
if(DEFINED Qt${QT_TEST_VERSION}Core_VERSION AND Qt${QT_TEST_VERSION}Core_VERSION VERSION_GREATER_EQUAL "5.15.0")
|
||||
set(moc_depfiles_supported TRUE)
|
||||
else()
|
||||
set(moc_depfiles_supported FALSE)
|
||||
set(moc_depfiles_supported FALSE)
|
||||
endif()
|
||||
|
||||
# Utility macros
|
||||
@@ -48,6 +48,7 @@ try_compile(MOC_RERUN
|
||||
MocOnMissingDependency
|
||||
CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_AUTOGEN_VERBOSE=ON"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RerunMocPlugin)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -63,6 +63,7 @@ try_compile(MOC_PLUGIN
|
||||
MocPlugin
|
||||
CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(MocPlugin)
|
||||
include("../../AutogenGuiTest.cmake")
|
||||
|
||||
@@ -22,7 +22,7 @@ configure_file(jsonIn/StyleE.json jsonFiles/StyleE_Custom.json)
|
||||
set(CMAKE_AUTOMOC TRUE)
|
||||
|
||||
include_directories("${CMAKE_CURRENT_BINARY_DIR}/jsonFiles")
|
||||
link_libraries(Qt5::Widgets)
|
||||
link_libraries(Qt${QT_TEST_VERSION}::Widgets)
|
||||
|
||||
add_library(PlugA STATIC StyleA.cpp)
|
||||
add_library(PlugB STATIC StyleB.cpp)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.11.2)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RerunRccConfigChange)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -33,6 +33,7 @@ try_compile(RCC_DEPENDS
|
||||
RccConfigChange
|
||||
CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.11.2)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RccConfigChange)
|
||||
include("../../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RerunRccDepends)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
@@ -66,6 +66,7 @@ try_compile(RCC_DEPENDS
|
||||
RccDepends
|
||||
CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(RccDepends)
|
||||
include("../../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -66,6 +66,7 @@ execute_process(
|
||||
"${build_type_extra}"
|
||||
"-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
RESULT_VARIABLE exit_code
|
||||
OUTPUT_VARIABLE output
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(UicOnFileChange)
|
||||
include("@CMAKE_CURRENT_LIST_DIR@/../AutogenGuiTest.cmake")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(StaticLibraryCycle)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -7,8 +7,17 @@ else()
|
||||
endif()
|
||||
list(APPEND Autogen_BUILD_OPTIONS
|
||||
"-DCMAKE_AUTOGEN_VERBOSE=1"
|
||||
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
)
|
||||
if(Qt${QT_TEST_VERSION}Core_DIR)
|
||||
get_filename_component(prefix "${Qt${QT_TEST_VERSION}Core_DIR}" DIRECTORY)
|
||||
get_filename_component(prefix "${prefix}" DIRECTORY)
|
||||
get_filename_component(prefix "${prefix}" DIRECTORY)
|
||||
list(APPEND Autogen_BUILD_OPTIONS "-DCMAKE_PREFIX_PATH:STRING=${prefix}")
|
||||
else()
|
||||
list(APPEND Autogen_BUILD_OPTIONS
|
||||
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
)
|
||||
endif()
|
||||
# XXX(xcode-per-cfg-src): Drop the NO_PER_CONFIG_SOURCES exclusion
|
||||
# when the Xcode generator supports per-config sources.
|
||||
if(CMAKE_GENERATOR STREQUAL "Xcode")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(UicInclude)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(UicInterface)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
@@ -11,12 +11,12 @@ set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
|
||||
add_library(KI18n klocalizedstring.cpp)
|
||||
target_link_libraries(KI18n ${QT_QTCORE_TARGET})
|
||||
target_link_libraries(KI18n PRIVATE ${QT_QTCORE_TARGET})
|
||||
|
||||
set(autouic_options
|
||||
-tr tr2$<$<NOT:$<BOOL:$<TARGET_PROPERTY:NO_KUIT_SEMANTIC>>>:x>i18n
|
||||
)
|
||||
if (NOT Qt5Widgets_VERSION VERSION_LESS 5.3.0)
|
||||
if (NOT Qt${QT_TEST_VERSION}Widgets_VERSION VERSION_LESS 5.3.0)
|
||||
list(APPEND autouic_options -include klocalizedstring.h)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(UicNoGui)
|
||||
include("../AutogenCoreTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(UicOnly)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(UicSkipSource)
|
||||
include("../AutogenGuiTest.cmake")
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
enable_language(CXX)
|
||||
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core)
|
||||
find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core)
|
||||
|
||||
# Detect `-NOTFOUND` libraries at generate time.
|
||||
cmake_policy(SET CMP0111 NEW)
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(${RunCMake_TEST} NONE)
|
||||
include(${RunCMake_TEST}.cmake)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
enable_language(CXX)
|
||||
|
||||
function (use_autogen target)
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
|
||||
set(Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}" PARENT_SCOPE)
|
||||
set(Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MINOR}" PARENT_SCOPE)
|
||||
find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets)
|
||||
set(Qt${with_qt_version}Core_VERSION_MAJOR "${Qt${with_qt_version}Core_VERSION_MAJOR}" PARENT_SCOPE)
|
||||
set(Qt${with_qt_version}Core_VERSION_MINOR "${Qt${with_qt_version}Core_VERSION_MINOR}" PARENT_SCOPE)
|
||||
set_property(TARGET "${target}" PROPERTY AUTOMOC 1)
|
||||
set_property(TARGET "${target}" PROPERTY AUTORCC 1)
|
||||
set_property(TARGET "${target}" PROPERTY AUTOUIC 1)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
enable_language(CXX)
|
||||
|
||||
function (use_autogen target)
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
|
||||
set(Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}" PARENT_SCOPE)
|
||||
set(Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MINOR}" PARENT_SCOPE)
|
||||
find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets)
|
||||
set(Qt${with_qt_version}Core_VERSION_MAJOR "${Qt${with_qt_version}Core_VERSION_MAJOR}" PARENT_SCOPE)
|
||||
set(Qt${with_qt_version}Core_VERSION_MINOR "${Qt${with_qt_version}Core_VERSION_MINOR}" PARENT_SCOPE)
|
||||
set_property(TARGET "${target}" PROPERTY AUTOMOC 1)
|
||||
set_property(TARGET "${target}" PROPERTY AUTORCC 1)
|
||||
set_property(TARGET "${target}" PROPERTY AUTOUIC 1)
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
enable_language(CXX)
|
||||
|
||||
function (use_autogen target)
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
|
||||
find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets)
|
||||
set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
PROPERTY
|
||||
Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}")
|
||||
Qt${with_qt_version}Core_VERSION_MAJOR "${Qt${with_qt_version}Core_VERSION_MAJOR}")
|
||||
set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
PROPERTY
|
||||
Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MINOR}")
|
||||
Qt${with_qt_version}Core_VERSION_MINOR "${Qt${with_qt_version}Core_VERSION_MINOR}")
|
||||
set_property(TARGET "${target}" PROPERTY AUTOMOC 1)
|
||||
set_property(TARGET "${target}" PROPERTY AUTORCC 1)
|
||||
set_property(TARGET "${target}" PROPERTY AUTOUIC 1)
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
include(RunCMake)
|
||||
|
||||
run_cmake(NoQt)
|
||||
if (with_qt5)
|
||||
if (DEFINED with_qt_version)
|
||||
set(RunCMake_TEST_OPTIONS
|
||||
-Dwith_qt_version=${with_qt_version}
|
||||
"-DQt${with_qt_version}_DIR:PATH=${Qt${with_qt_version}_DIR}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
)
|
||||
|
||||
run_cmake(QtInFunction)
|
||||
run_cmake(QtInFunctionNested)
|
||||
run_cmake(QtInFunctionProperty)
|
||||
|
||||
@@ -151,8 +151,23 @@ endif()
|
||||
if(CMAKE_GENERATOR MATCHES "Make")
|
||||
add_RunCMake_test(Make -DMAKE_IS_GNU=${MAKE_IS_GNU})
|
||||
endif()
|
||||
if(CMake_TEST_Qt5)
|
||||
unset(ninja_test_with_qt_version)
|
||||
unset(ninja_qt_args)
|
||||
if(CMake_TEST_Qt6)
|
||||
find_package(Qt6Widgets QUIET NO_MODULE)
|
||||
if(Qt6Widgets_FOUND)
|
||||
set(ninja_test_with_qt_version 6)
|
||||
# Work around Qt6 not finding sibling dependencies without CMAKE_PREFIX_PATH
|
||||
cmake_path(GET Qt6_DIR PARENT_PATH base_dir) # <base>/lib/cmake
|
||||
cmake_path(GET base_dir PARENT_PATH base_dir) # <base>/lib
|
||||
cmake_path(GET base_dir PARENT_PATH base_dir) # <base>
|
||||
set(ninja_qt_args -DCMAKE_PREFIX_PATH=${base_dir})
|
||||
endif()
|
||||
elseif(CMake_TEST_Qt5)
|
||||
find_package(Qt5Widgets QUIET NO_MODULE)
|
||||
if(Qt5Widgets_FOUND)
|
||||
set(ninja_test_with_qt_version 5)
|
||||
endif()
|
||||
endif()
|
||||
if(CMAKE_GENERATOR MATCHES "Ninja")
|
||||
set(Ninja_ARGS
|
||||
@@ -162,18 +177,27 @@ if(CMAKE_GENERATOR MATCHES "Ninja")
|
||||
if(CMAKE_Fortran_COMPILER)
|
||||
list(APPEND Ninja_ARGS -DTEST_Fortran=1)
|
||||
endif()
|
||||
if(CMake_TEST_Qt5 AND Qt5Core_FOUND)
|
||||
list(APPEND Ninja_ARGS -DCMake_TEST_Qt5=1 -DQt5Core_DIR=${Qt5Core_DIR} -DCMAKE_TEST_Qt5Core_Version=${Qt5Core_VERSION})
|
||||
if(Qt5Widgets_FOUND)
|
||||
list(APPEND Ninja_ARGS -DQt5Widgets_DIR=${Qt5Widgets_DIR})
|
||||
endif()
|
||||
if(ninja_test_with_qt_version)
|
||||
list(APPEND Ninja_ARGS
|
||||
-DCMake_TEST_Qt_version=${ninja_test_with_qt_version}
|
||||
-DQt${ninja_test_with_qt_version}_DIR=${Qt${ninja_test_with_qt_version}_DIR}
|
||||
-DQt${ninja_test_with_qt_version}Core_DIR=${Qt${ninja_test_with_qt_version}Core_DIR}
|
||||
-DCMake_TEST_Qt${ninja_test_with_qt_version}Core_Version=${Qt${ninja_test_with_qt_version}Core_VERSION}
|
||||
-DQt${ninja_test_with_qt_version}Widgets_DIR=${Qt${ninja_test_with_qt_version}Widgets_DIR}
|
||||
${ninja_qt_args}
|
||||
)
|
||||
endif()
|
||||
add_RunCMake_test(Ninja)
|
||||
set(NinjaMultiConfig_ARGS
|
||||
-DCYGWIN=${CYGWIN} -DMSYS=${MSYS}
|
||||
)
|
||||
if(CMake_TEST_Qt5 AND Qt5Core_FOUND)
|
||||
list(APPEND NinjaMultiConfig_ARGS -DCMake_TEST_Qt5=1 -DQt5Core_DIR=${Qt5Core_DIR} -DCMAKE_TEST_Qt5Core_Version=${Qt5Core_VERSION})
|
||||
if(ninja_test_with_qt_version)
|
||||
list(APPEND NinjaMultiConfig_ARGS
|
||||
-DCMake_TEST_Qt_version=${ninja_test_with_qt_version}
|
||||
-DQt${ninja_test_with_qt_version}Core_DIR=${Qt${ninja_test_with_qt_version}Core_DIR}
|
||||
-DCMake_TEST_Qt${ninja_test_with_qt_version}Core_Version=${Qt${ninja_test_with_qt_version}Core_VERSION}
|
||||
${ninja_qt_args}
|
||||
)
|
||||
endif()
|
||||
if(DEFINED CMake_TEST_CUDA)
|
||||
list(APPEND NinjaMultiConfig_ARGS -DCMake_TEST_CUDA=${CMake_TEST_CUDA})
|
||||
@@ -205,11 +229,29 @@ add_RunCMake_test(AndroidTestUtilities)
|
||||
if(CMake_TEST_APPLE_SILICON)
|
||||
add_RunCMake_test(AppleSilicon)
|
||||
endif()
|
||||
set(autogen_with_qt5 FALSE)
|
||||
if(CMake_TEST_Qt5 AND Qt5Widgets_FOUND)
|
||||
set(autogen_with_qt5 TRUE)
|
||||
set(want_NoQt_test TRUE)
|
||||
if(CMake_TEST_Qt6 AND Qt6Widgets_FOUND)
|
||||
# Work around Qt6 not finding sibling dependencies without CMAKE_PREFIX_PATH
|
||||
cmake_path(GET Qt6_DIR PARENT_PATH base_dir) # <base>/lib/cmake
|
||||
cmake_path(GET base_dir PARENT_PATH base_dir) # <base>/lib
|
||||
cmake_path(GET base_dir PARENT_PATH base_dir) # <base>
|
||||
add_RunCMake_test(AutogenQt6 TEST_DIR Autogen
|
||||
-Dwith_qt_version=6
|
||||
"-DQt6_DIR:PATH=${Qt6_DIR}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${base_dir}"
|
||||
)
|
||||
set(want_NoQt_test FALSE)
|
||||
endif ()
|
||||
add_RunCMake_test(Autogen -Dwith_qt5=${autogen_with_qt5})
|
||||
if(CMake_TEST_Qt5 AND Qt5Widgets_FOUND)
|
||||
add_RunCMake_test(AutogenQt5 TEST_DIR Autogen
|
||||
-Dwith_qt_version=5
|
||||
"-DQt5_DIR:PATH=${Qt5_DIR}"
|
||||
)
|
||||
set(want_NoQt_test FALSE)
|
||||
endif ()
|
||||
if(want_NoQt_test)
|
||||
add_RunCMake_test(AutogenNoQt TEST_DIR Autogen)
|
||||
endif()
|
||||
|
||||
add_RunCMake_test(ArtifactOutputDirs)
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
enable_language(CXX)
|
||||
|
||||
find_package(Qt5Core REQUIRED)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
add_library(simple_lib SHARED simple_lib.cpp)
|
||||
add_executable(app_with_qt app.cpp app_qt.cpp)
|
||||
target_link_libraries(app_with_qt PRIVATE simple_lib Qt5::Core)
|
||||
|
||||
if(Qt5Widgets_DIR)
|
||||
find_package(Qt5Widgets REQUIRED)
|
||||
qt5_wrap_ui(_headers MyWindow.ui)
|
||||
add_executable(app_with_widget app.cpp MyWindow.cpp ${_headers})
|
||||
target_link_libraries(app_with_widget PRIVATE Qt5::Widgets)
|
||||
target_include_directories(app_with_widget PRIVATE "${CMAKE_BINARY_DIR}")
|
||||
endif()
|
||||
|
||||
add_subdirectory(QtSubDir1)
|
||||
add_subdirectory(QtSubDir2)
|
||||
add_subdirectory(QtSubDir3)
|
||||
27
Tests/RunCMake/Ninja/QtAutoMocDeps.cmake
Normal file
27
Tests/RunCMake/Ninja/QtAutoMocDeps.cmake
Normal file
@@ -0,0 +1,27 @@
|
||||
enable_language(CXX)
|
||||
|
||||
set(QtX Qt${with_qt_version})
|
||||
|
||||
find_package(${QtX} REQUIRED COMPONENTS Core)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
add_library(simple_lib SHARED simple_lib.cpp)
|
||||
add_executable(app_with_qt app.cpp app_qt.cpp)
|
||||
target_link_libraries(app_with_qt PRIVATE simple_lib ${QtX}::Core)
|
||||
|
||||
if(${QtX}Widgets_DIR)
|
||||
find_package(${QtX} REQUIRED COMPONENTS Widgets)
|
||||
if(with_qt_version STREQUAL 5)
|
||||
qt5_wrap_ui(_headers MyWindow.ui)
|
||||
else()
|
||||
qt_wrap_ui(_headers MyWindow.ui)
|
||||
endif()
|
||||
add_executable(app_with_widget app.cpp MyWindow.cpp ${_headers})
|
||||
target_link_libraries(app_with_widget PRIVATE ${QtX}::Widgets)
|
||||
target_include_directories(app_with_widget PRIVATE "${CMAKE_BINARY_DIR}")
|
||||
endif()
|
||||
|
||||
add_subdirectory(QtSubDir1)
|
||||
add_subdirectory(QtSubDir2)
|
||||
add_subdirectory(QtSubDir3)
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_policy(SET CMP0116 OLD)
|
||||
|
||||
add_executable(sub_exe_1 ../app.cpp)
|
||||
target_link_libraries(sub_exe_1 PRIVATE Qt5::Core)
|
||||
target_link_libraries(sub_exe_1 PRIVATE ${QtX}::Core)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_policy(SET CMP0116 NEW)
|
||||
|
||||
add_executable(sub_exe_2 ../app.cpp)
|
||||
target_link_libraries(sub_exe_2 PRIVATE Qt5::Core)
|
||||
target_link_libraries(sub_exe_2 PRIVATE ${QtX}::Core)
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
add_executable(sub_exe_3 ../app.cpp)
|
||||
target_link_libraries(sub_exe_3 PRIVATE Qt5::Core)
|
||||
target_link_libraries(sub_exe_3 PRIVATE ${QtX}::Core)
|
||||
|
||||
@@ -319,12 +319,17 @@ function (run_ChangeBuildType)
|
||||
endfunction()
|
||||
run_ChangeBuildType()
|
||||
|
||||
function(run_Qt5AutoMocDeps)
|
||||
if(CMake_TEST_Qt5 AND CMAKE_TEST_Qt5Core_Version VERSION_GREATER_EQUAL 5.15.0)
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Qt5AutoMocDeps-build)
|
||||
set(RunCMake_TEST_OPTIONS "-DQt5Core_DIR=${Qt5Core_DIR}" "-DQt5Widgets_DIR=${Qt5Widgets_DIR}")
|
||||
run_cmake(Qt5AutoMocDeps)
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
function(run_QtAutoMocDeps)
|
||||
set(QtX Qt${CMake_TEST_Qt_version})
|
||||
if(CMake_TEST_${QtX}Core_Version VERSION_GREATER_EQUAL 5.15.0)
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/QtAutoMocDeps-build)
|
||||
run_cmake_with_options(QtAutoMocDeps
|
||||
"-Dwith_qt_version=${CMake_TEST_Qt_version}"
|
||||
"-D${QtX}_DIR=${${QtX}_DIR}"
|
||||
"-D${QtX}Core_DIR=${${QtX}Core_DIR}"
|
||||
"-D${QtX}Widgets_DIR=${${QtX}Widgets_DIR}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
)
|
||||
# Build the project.
|
||||
run_ninja("${RunCMake_TEST_BINARY_DIR}")
|
||||
# Touch just the library source file, which shouldn't cause a rerun of AUTOMOC
|
||||
@@ -352,4 +357,6 @@ function(run_Qt5AutoMocDeps)
|
||||
run_ninja("${RunCMake_TEST_BINARY_DIR}")
|
||||
endif()
|
||||
endfunction()
|
||||
run_Qt5AutoMocDeps()
|
||||
if(CMake_TEST_Qt_version)
|
||||
run_QtAutoMocDeps()
|
||||
endif()
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
enable_language(CXX)
|
||||
|
||||
find_package(Qt5Core REQUIRED)
|
||||
set(QtX Qt${with_qt_version})
|
||||
|
||||
find_package(${QtX} REQUIRED COMPONENTS Core)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTOMOC_COMPILER_PREDEFINES OFF)
|
||||
|
||||
# Source files are always named qt5.* for simplicity but apply to Qt5 and later
|
||||
add_executable(exe qt5.cxx)
|
||||
target_link_libraries(exe PRIVATE Qt5::Core)
|
||||
target_link_libraries(exe PRIVATE ${QtX}::Core)
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/Common.cmake)
|
||||
generate_output_files(exe)
|
||||
|
||||
set(moc_writes_depfiles 0)
|
||||
if(Qt5Core_VERSION VERSION_GREATER_EQUAL "5.15.0")
|
||||
if(${QtX}Core_VERSION VERSION_GREATER_EQUAL "5.15.0")
|
||||
set(moc_writes_depfiles 1)
|
||||
endif()
|
||||
|
||||
@@ -446,14 +446,20 @@ if(CMake_TEST_CUDA AND NOT CMake_TEST_CUDA STREQUAL "Clang")
|
||||
run_ninja(CudaSimple all-clean build-Debug.ninja clean:Debug)
|
||||
endif()
|
||||
|
||||
if(CMake_TEST_Qt5)
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Qt5-build)
|
||||
set(RunCMake_TEST_OPTIONS "-DCMAKE_CROSS_CONFIGS=all" "-DQt5Core_DIR=${Qt5Core_DIR}")
|
||||
run_cmake_configure(Qt5)
|
||||
if(CMake_TEST_Qt_version)
|
||||
set(QtX Qt${CMake_TEST_Qt_version})
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/QtX-build)
|
||||
set(RunCMake_TEST_OPTIONS
|
||||
"-DCMAKE_CROSS_CONFIGS=all"
|
||||
"-Dwith_qt_version:STRING=${CMake_TEST_Qt_version}"
|
||||
"-D${QtX}Core_DIR=${${QtX}Core_DIR}"
|
||||
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
||||
)
|
||||
run_cmake_configure(QtX)
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
include(${RunCMake_TEST_BINARY_DIR}/target_files.cmake)
|
||||
run_cmake_build(Qt5 debug-in-release-graph Release exe:Debug)
|
||||
if(CMAKE_TEST_Qt5Core_Version VERSION_GREATER_EQUAL 5.15.0)
|
||||
run_ninja(Qt5 automoc-check build-Debug.ninja -t query exe_autogen/timestamp)
|
||||
run_cmake_build(QtX debug-in-release-graph Release exe:Debug)
|
||||
if(CMake_TEST_${QtX}Core_Version VERSION_GREATER_EQUAL 5.15.0)
|
||||
run_ninja(QtX automoc-check build-Debug.ninja -t query exe_autogen/timestamp)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user