From 6ee5c431d5a7217b12268cc6ccc1ac62625abf4f Mon Sep 17 00:00:00 2001 From: Orkun Tokdemir Date: Fri, 21 Jun 2024 15:41:44 +0200 Subject: Autogen: Separate RunCMake.AutogenQtX tests The RunCMake.AutogenQtX tests occasionally time out so separate `RunCMake.AutogenQtX` tests. Example: https://open.cdash.org/tests/1583599782 --- .../RunCMake/Autogen/AutoMocExecutableConfig.cmake | 15 - .../RunCMake/Autogen/AutoRccExecutableConfig.cmake | 15 - .../RunCMake/Autogen/AutoUicExecutableConfig.cmake | 15 - .../Autogen/AutogenSkipLinting-build-stderr.txt | 1 - Tests/RunCMake/Autogen/AutogenSkipLinting.cmake | 16 - .../Autogen/AutogenUseSystemIncludeCommon.cmake | 10 - .../Autogen/AutogenUseSystemIncludeOff.cmake | 3 - .../Autogen/AutogenUseSystemIncludeOn.cmake | 3 - .../Autogen/CMP0111-imported-target-full.cmake | 12 - .../CMP0111-imported-target-implib-only.cmake | 13 - .../Autogen/CMP0111-imported-target-libname.cmake | 14 - .../Autogen/CMP0111-imported-target-prelude.cmake | 32 -- Tests/RunCMake/Autogen/CMP0151-common.cmake | 10 - Tests/RunCMake/Autogen/CMP0151-new.cmake | 1 - Tests/RunCMake/Autogen/CMP0151-old.cmake | 1 - Tests/RunCMake/Autogen/CMakeLists.txt | 3 - Tests/RunCMake/Autogen/Inspect.cmake | 13 - Tests/RunCMake/Autogen/MocExample.cmake | 11 - Tests/RunCMake/Autogen/MocGeneratedFile.cmake | 15 - Tests/RunCMake/Autogen/MocPredefs-build-stderr.txt | 1 - Tests/RunCMake/Autogen/MocPredefs-check.cxx | 60 --- Tests/RunCMake/Autogen/MocPredefs-prefix.cmake | 3 - Tests/RunCMake/Autogen/MocPredefs.cmake | 39 -- Tests/RunCMake/Autogen/MocPredefs.cxx | 3 - Tests/RunCMake/Autogen/MyWindow.cpp | 7 - Tests/RunCMake/Autogen/MyWindow.h | 16 - Tests/RunCMake/Autogen/MyWindow.ui | 5 - Tests/RunCMake/Autogen/NoQt-stderr.txt | 8 - Tests/RunCMake/Autogen/NoQt.cmake | 6 - Tests/RunCMake/Autogen/QtAutoMocDeps-stderr.txt | 8 - Tests/RunCMake/Autogen/QtAutoMocDeps.cmake | 23 - Tests/RunCMake/Autogen/QtInFunction.cmake | 13 - .../RunCMake/Autogen/QtInFunctionNested-stderr.txt | 8 - Tests/RunCMake/Autogen/QtInFunctionNested.cmake | 17 - Tests/RunCMake/Autogen/QtInFunctionProperty.cmake | 21 - Tests/RunCMake/Autogen/QtSubDir1/CMakeLists.txt | 4 - Tests/RunCMake/Autogen/QtSubDir2/CMakeLists.txt | 4 - Tests/RunCMake/Autogen/QtSubDir3/CMakeLists.txt | 2 - Tests/RunCMake/Autogen/RccExample.cmake | 15 - Tests/RunCMake/Autogen/RunCMakeTest.cmake | 487 --------------------- Tests/RunCMake/Autogen/SkipLinting.cxx | 6 - Tests/RunCMake/Autogen/SkipLinting.h | 11 - Tests/RunCMake/Autogen/UicExample.cmake | 11 - Tests/RunCMake/Autogen/app.cpp | 6 - Tests/RunCMake/Autogen/app_qt.cpp | 11 - Tests/RunCMake/Autogen/data.qrc | 4 - Tests/RunCMake/Autogen/empty.cpp | 0 Tests/RunCMake/Autogen/example.cpp | 5 - Tests/RunCMake/Autogen/example.h | 12 - Tests/RunCMake/Autogen/example_ui.cpp | 5 - Tests/RunCMake/Autogen/example_ui.h | 14 - Tests/RunCMake/Autogen/exe.cpp | 4 - Tests/RunCMake/Autogen/exe_common.h | 48 -- Tests/RunCMake/Autogen/exe_debug.cpp | 10 - Tests/RunCMake/Autogen/exe_release.cpp | 10 - Tests/RunCMake/Autogen/exe_relwithdebinfo.cpp | 10 - Tests/RunCMake/Autogen/simple_lib.cpp | 6 - Tests/RunCMake/Autogen/uiA.ui | 24 - .../Autogen_1/AutogenSkipLinting-build-stderr.txt | 1 + Tests/RunCMake/Autogen_1/AutogenSkipLinting.cmake | 16 + .../Autogen_1/AutogenUseSystemIncludeCommon.cmake | 10 + .../Autogen_1/AutogenUseSystemIncludeOff.cmake | 3 + .../Autogen_1/AutogenUseSystemIncludeOn.cmake | 3 + .../Autogen_1/CMP0111-imported-target-full.cmake | 12 + .../CMP0111-imported-target-implib-only.cmake | 13 + .../CMP0111-imported-target-libname.cmake | 14 + .../CMP0111-imported-target-prelude.cmake | 32 ++ Tests/RunCMake/Autogen_1/CMP0151-common.cmake | 10 + Tests/RunCMake/Autogen_1/CMP0151-new.cmake | 1 + Tests/RunCMake/Autogen_1/CMP0151-old.cmake | 1 + Tests/RunCMake/Autogen_1/CMakeLists.txt | 3 + Tests/RunCMake/Autogen_1/Inspect.cmake | 13 + Tests/RunCMake/Autogen_1/MocGeneratedFile.cmake | 15 + .../RunCMake/Autogen_1/MocPredefs-build-stderr.txt | 1 + Tests/RunCMake/Autogen_1/MocPredefs-check.cxx | 60 +++ Tests/RunCMake/Autogen_1/MocPredefs-prefix.cmake | 3 + Tests/RunCMake/Autogen_1/MocPredefs.cmake | 39 ++ Tests/RunCMake/Autogen_1/MocPredefs.cxx | 3 + Tests/RunCMake/Autogen_1/NoQt-stderr.txt | 8 + Tests/RunCMake/Autogen_1/NoQt.cmake | 6 + Tests/RunCMake/Autogen_1/QtInFunction.cmake | 13 + .../Autogen_1/QtInFunctionNested-stderr.txt | 8 + Tests/RunCMake/Autogen_1/QtInFunctionNested.cmake | 17 + .../RunCMake/Autogen_1/QtInFunctionProperty.cmake | 21 + Tests/RunCMake/Autogen_1/RunCMakeTest.cmake | 125 ++++++ Tests/RunCMake/Autogen_1/SkipLinting.cxx | 6 + Tests/RunCMake/Autogen_1/SkipLinting.h | 11 + Tests/RunCMake/Autogen_1/empty.cpp | 0 Tests/RunCMake/Autogen_2/CMakeLists.txt | 3 + Tests/RunCMake/Autogen_2/MyWindow.cpp | 7 + Tests/RunCMake/Autogen_2/MyWindow.h | 16 + Tests/RunCMake/Autogen_2/MyWindow.ui | 5 + Tests/RunCMake/Autogen_2/QtAutoMocDeps-stderr.txt | 8 + Tests/RunCMake/Autogen_2/QtAutoMocDeps.cmake | 23 + Tests/RunCMake/Autogen_2/QtSubDir1/CMakeLists.txt | 4 + Tests/RunCMake/Autogen_2/QtSubDir2/CMakeLists.txt | 4 + Tests/RunCMake/Autogen_2/QtSubDir3/CMakeLists.txt | 2 + Tests/RunCMake/Autogen_2/RunCMakeTest.cmake | 87 ++++ Tests/RunCMake/Autogen_2/app.cpp | 6 + Tests/RunCMake/Autogen_2/app_qt.cpp | 11 + Tests/RunCMake/Autogen_2/simple_lib.cpp | 6 + .../Autogen_3/AutoMocExecutableConfig.cmake | 15 + Tests/RunCMake/Autogen_3/CMakeLists.txt | 3 + Tests/RunCMake/Autogen_3/MocExample.cmake | 11 + Tests/RunCMake/Autogen_3/RunCMakeTest.cmake | 11 + .../Autogen_4/AutoUicExecutableConfig.cmake | 15 + Tests/RunCMake/Autogen_4/CMakeLists.txt | 3 + Tests/RunCMake/Autogen_4/RunCMakeTest.cmake | 11 + Tests/RunCMake/Autogen_4/UicExample.cmake | 11 + Tests/RunCMake/Autogen_4/example_ui.cpp | 5 + Tests/RunCMake/Autogen_4/example_ui.h | 14 + Tests/RunCMake/Autogen_4/uiA.ui | 24 + .../Autogen_5/AutoRccExecutableConfig.cmake | 15 + Tests/RunCMake/Autogen_5/CMakeLists.txt | 3 + Tests/RunCMake/Autogen_5/RccExample.cmake | 15 + Tests/RunCMake/Autogen_5/RunCMakeTest.cmake | 31 ++ Tests/RunCMake/Autogen_5/data.qrc | 4 + Tests/RunCMake/Autogen_common/example.cpp | 5 + Tests/RunCMake/Autogen_common/example.h | 12 + Tests/RunCMake/Autogen_common/exe_common.h | 48 ++ Tests/RunCMake/Autogen_common/exe_debug.cpp | 10 + Tests/RunCMake/Autogen_common/exe_release.cpp | 10 + .../RunCMake/Autogen_common/exe_relwithdebinfo.cpp | 10 + Tests/RunCMake/Autogen_common/utils.cmake | 259 +++++++++++ Tests/RunCMake/CMakeLists.txt | 39 +- 125 files changed, 1218 insertions(+), 1166 deletions(-) delete mode 100644 Tests/RunCMake/Autogen/AutoMocExecutableConfig.cmake delete mode 100644 Tests/RunCMake/Autogen/AutoRccExecutableConfig.cmake delete mode 100644 Tests/RunCMake/Autogen/AutoUicExecutableConfig.cmake delete mode 100644 Tests/RunCMake/Autogen/AutogenSkipLinting-build-stderr.txt delete mode 100644 Tests/RunCMake/Autogen/AutogenSkipLinting.cmake delete mode 100644 Tests/RunCMake/Autogen/AutogenUseSystemIncludeCommon.cmake delete mode 100644 Tests/RunCMake/Autogen/AutogenUseSystemIncludeOff.cmake delete mode 100644 Tests/RunCMake/Autogen/AutogenUseSystemIncludeOn.cmake delete mode 100644 Tests/RunCMake/Autogen/CMP0111-imported-target-full.cmake delete mode 100644 Tests/RunCMake/Autogen/CMP0111-imported-target-implib-only.cmake delete mode 100644 Tests/RunCMake/Autogen/CMP0111-imported-target-libname.cmake delete mode 100644 Tests/RunCMake/Autogen/CMP0111-imported-target-prelude.cmake delete mode 100644 Tests/RunCMake/Autogen/CMP0151-common.cmake delete mode 100644 Tests/RunCMake/Autogen/CMP0151-new.cmake delete mode 100644 Tests/RunCMake/Autogen/CMP0151-old.cmake delete mode 100644 Tests/RunCMake/Autogen/CMakeLists.txt delete mode 100644 Tests/RunCMake/Autogen/Inspect.cmake delete mode 100644 Tests/RunCMake/Autogen/MocExample.cmake delete mode 100644 Tests/RunCMake/Autogen/MocGeneratedFile.cmake delete mode 100644 Tests/RunCMake/Autogen/MocPredefs-build-stderr.txt delete mode 100644 Tests/RunCMake/Autogen/MocPredefs-check.cxx delete mode 100644 Tests/RunCMake/Autogen/MocPredefs-prefix.cmake delete mode 100644 Tests/RunCMake/Autogen/MocPredefs.cmake delete mode 100644 Tests/RunCMake/Autogen/MocPredefs.cxx delete mode 100644 Tests/RunCMake/Autogen/MyWindow.cpp delete mode 100644 Tests/RunCMake/Autogen/MyWindow.h delete mode 100644 Tests/RunCMake/Autogen/MyWindow.ui delete mode 100644 Tests/RunCMake/Autogen/NoQt-stderr.txt delete mode 100644 Tests/RunCMake/Autogen/NoQt.cmake delete mode 100644 Tests/RunCMake/Autogen/QtAutoMocDeps-stderr.txt delete mode 100644 Tests/RunCMake/Autogen/QtAutoMocDeps.cmake delete mode 100644 Tests/RunCMake/Autogen/QtInFunction.cmake delete mode 100644 Tests/RunCMake/Autogen/QtInFunctionNested-stderr.txt delete mode 100644 Tests/RunCMake/Autogen/QtInFunctionNested.cmake delete mode 100644 Tests/RunCMake/Autogen/QtInFunctionProperty.cmake delete mode 100644 Tests/RunCMake/Autogen/QtSubDir1/CMakeLists.txt delete mode 100644 Tests/RunCMake/Autogen/QtSubDir2/CMakeLists.txt delete mode 100644 Tests/RunCMake/Autogen/QtSubDir3/CMakeLists.txt delete mode 100644 Tests/RunCMake/Autogen/RccExample.cmake delete mode 100644 Tests/RunCMake/Autogen/RunCMakeTest.cmake delete mode 100644 Tests/RunCMake/Autogen/SkipLinting.cxx delete mode 100644 Tests/RunCMake/Autogen/SkipLinting.h delete mode 100644 Tests/RunCMake/Autogen/UicExample.cmake delete mode 100644 Tests/RunCMake/Autogen/app.cpp delete mode 100644 Tests/RunCMake/Autogen/app_qt.cpp delete mode 100644 Tests/RunCMake/Autogen/data.qrc delete mode 100644 Tests/RunCMake/Autogen/empty.cpp delete mode 100644 Tests/RunCMake/Autogen/example.cpp delete mode 100644 Tests/RunCMake/Autogen/example.h delete mode 100644 Tests/RunCMake/Autogen/example_ui.cpp delete mode 100644 Tests/RunCMake/Autogen/example_ui.h delete mode 100644 Tests/RunCMake/Autogen/exe.cpp delete mode 100644 Tests/RunCMake/Autogen/exe_common.h delete mode 100644 Tests/RunCMake/Autogen/exe_debug.cpp delete mode 100644 Tests/RunCMake/Autogen/exe_release.cpp delete mode 100644 Tests/RunCMake/Autogen/exe_relwithdebinfo.cpp delete mode 100644 Tests/RunCMake/Autogen/simple_lib.cpp delete mode 100644 Tests/RunCMake/Autogen/uiA.ui create mode 100644 Tests/RunCMake/Autogen_1/AutogenSkipLinting-build-stderr.txt create mode 100644 Tests/RunCMake/Autogen_1/AutogenSkipLinting.cmake create mode 100644 Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeCommon.cmake create mode 100644 Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeOff.cmake create mode 100644 Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeOn.cmake create mode 100644 Tests/RunCMake/Autogen_1/CMP0111-imported-target-full.cmake create mode 100644 Tests/RunCMake/Autogen_1/CMP0111-imported-target-implib-only.cmake create mode 100644 Tests/RunCMake/Autogen_1/CMP0111-imported-target-libname.cmake create mode 100644 Tests/RunCMake/Autogen_1/CMP0111-imported-target-prelude.cmake create mode 100644 Tests/RunCMake/Autogen_1/CMP0151-common.cmake create mode 100644 Tests/RunCMake/Autogen_1/CMP0151-new.cmake create mode 100644 Tests/RunCMake/Autogen_1/CMP0151-old.cmake create mode 100644 Tests/RunCMake/Autogen_1/CMakeLists.txt create mode 100644 Tests/RunCMake/Autogen_1/Inspect.cmake create mode 100644 Tests/RunCMake/Autogen_1/MocGeneratedFile.cmake create mode 100644 Tests/RunCMake/Autogen_1/MocPredefs-build-stderr.txt create mode 100644 Tests/RunCMake/Autogen_1/MocPredefs-check.cxx create mode 100644 Tests/RunCMake/Autogen_1/MocPredefs-prefix.cmake create mode 100644 Tests/RunCMake/Autogen_1/MocPredefs.cmake create mode 100644 Tests/RunCMake/Autogen_1/MocPredefs.cxx create mode 100644 Tests/RunCMake/Autogen_1/NoQt-stderr.txt create mode 100644 Tests/RunCMake/Autogen_1/NoQt.cmake create mode 100644 Tests/RunCMake/Autogen_1/QtInFunction.cmake create mode 100644 Tests/RunCMake/Autogen_1/QtInFunctionNested-stderr.txt create mode 100644 Tests/RunCMake/Autogen_1/QtInFunctionNested.cmake create mode 100644 Tests/RunCMake/Autogen_1/QtInFunctionProperty.cmake create mode 100644 Tests/RunCMake/Autogen_1/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/Autogen_1/SkipLinting.cxx create mode 100644 Tests/RunCMake/Autogen_1/SkipLinting.h create mode 100644 Tests/RunCMake/Autogen_1/empty.cpp create mode 100644 Tests/RunCMake/Autogen_2/CMakeLists.txt create mode 100644 Tests/RunCMake/Autogen_2/MyWindow.cpp create mode 100644 Tests/RunCMake/Autogen_2/MyWindow.h create mode 100644 Tests/RunCMake/Autogen_2/MyWindow.ui create mode 100644 Tests/RunCMake/Autogen_2/QtAutoMocDeps-stderr.txt create mode 100644 Tests/RunCMake/Autogen_2/QtAutoMocDeps.cmake create mode 100644 Tests/RunCMake/Autogen_2/QtSubDir1/CMakeLists.txt create mode 100644 Tests/RunCMake/Autogen_2/QtSubDir2/CMakeLists.txt create mode 100644 Tests/RunCMake/Autogen_2/QtSubDir3/CMakeLists.txt create mode 100644 Tests/RunCMake/Autogen_2/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/Autogen_2/app.cpp create mode 100644 Tests/RunCMake/Autogen_2/app_qt.cpp create mode 100644 Tests/RunCMake/Autogen_2/simple_lib.cpp create mode 100644 Tests/RunCMake/Autogen_3/AutoMocExecutableConfig.cmake create mode 100644 Tests/RunCMake/Autogen_3/CMakeLists.txt create mode 100644 Tests/RunCMake/Autogen_3/MocExample.cmake create mode 100644 Tests/RunCMake/Autogen_3/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/Autogen_4/AutoUicExecutableConfig.cmake create mode 100644 Tests/RunCMake/Autogen_4/CMakeLists.txt create mode 100644 Tests/RunCMake/Autogen_4/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/Autogen_4/UicExample.cmake create mode 100644 Tests/RunCMake/Autogen_4/example_ui.cpp create mode 100644 Tests/RunCMake/Autogen_4/example_ui.h create mode 100644 Tests/RunCMake/Autogen_4/uiA.ui create mode 100644 Tests/RunCMake/Autogen_5/AutoRccExecutableConfig.cmake create mode 100644 Tests/RunCMake/Autogen_5/CMakeLists.txt create mode 100644 Tests/RunCMake/Autogen_5/RccExample.cmake create mode 100644 Tests/RunCMake/Autogen_5/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/Autogen_5/data.qrc create mode 100644 Tests/RunCMake/Autogen_common/example.cpp create mode 100644 Tests/RunCMake/Autogen_common/example.h create mode 100644 Tests/RunCMake/Autogen_common/exe_common.h create mode 100644 Tests/RunCMake/Autogen_common/exe_debug.cpp create mode 100644 Tests/RunCMake/Autogen_common/exe_release.cpp create mode 100644 Tests/RunCMake/Autogen_common/exe_relwithdebinfo.cpp create mode 100644 Tests/RunCMake/Autogen_common/utils.cmake diff --git a/Tests/RunCMake/Autogen/AutoMocExecutableConfig.cmake b/Tests/RunCMake/Autogen/AutoMocExecutableConfig.cmake deleted file mode 100644 index 3ee9be9..0000000 --- a/Tests/RunCMake/Autogen/AutoMocExecutableConfig.cmake +++ /dev/null @@ -1,15 +0,0 @@ -include(MocExample.cmake) - -if(NOT TARGET Qt${with_qt_version}::moc) - message(FATAL_ERROR "Qt${with_qt_version}::moc not found") -endif() - -get_target_property(moc_location Qt${with_qt_version}::moc IMPORTED_LOCATION) -set_target_properties(dummy PROPERTIES AUTOMOC_MOC_OPTIONS "EXE_PATH=${moc_location}") - -add_executable(mymoc $<$:exe_debug.cpp> - $<$:exe_release.cpp> - $<$:exe_relwithdebinfo.cpp> -) - -set_target_properties(dummy PROPERTIES AUTOMOC_EXECUTABLE $) diff --git a/Tests/RunCMake/Autogen/AutoRccExecutableConfig.cmake b/Tests/RunCMake/Autogen/AutoRccExecutableConfig.cmake deleted file mode 100644 index 0e46420..0000000 --- a/Tests/RunCMake/Autogen/AutoRccExecutableConfig.cmake +++ /dev/null @@ -1,15 +0,0 @@ -include(RccExample.cmake) - -if(NOT TARGET Qt${with_qt_version}::rcc) - message(FATAL_ERROR "Qt${with_qt_version}::rcc not found") -endif() - -get_target_property(rcc_location Qt${with_qt_version}::rcc IMPORTED_LOCATION) -set_target_properties(dummy PROPERTIES AUTORCC_OPTIONS "EXE_PATH=${rcc_location}") - -add_executable(myrcc $<$:exe_debug.cpp> - $<$:exe_release.cpp> - $<$:exe_relwithdebinfo.cpp> -) - -set_target_properties(dummy PROPERTIES AUTORCC_EXECUTABLE $) diff --git a/Tests/RunCMake/Autogen/AutoUicExecutableConfig.cmake b/Tests/RunCMake/Autogen/AutoUicExecutableConfig.cmake deleted file mode 100644 index 55b88b8..0000000 --- a/Tests/RunCMake/Autogen/AutoUicExecutableConfig.cmake +++ /dev/null @@ -1,15 +0,0 @@ -include(UicExample.cmake) - -if(NOT TARGET Qt${with_qt_version}::uic) - message(FATAL_ERROR "Qt${with_qt_version}::uic not found") -endif() - -get_target_property(uic_location Qt${with_qt_version}::uic IMPORTED_LOCATION) -set_target_properties(dummy PROPERTIES AUTOUIC_OPTIONS "EXE_PATH=${uic_location}") - -add_executable(myuic $<$:exe_debug.cpp> - $<$:exe_release.cpp> - $<$:exe_relwithdebinfo.cpp> -) - -set_target_properties(dummy PROPERTIES AUTOUIC_EXECUTABLE $) diff --git a/Tests/RunCMake/Autogen/AutogenSkipLinting-build-stderr.txt b/Tests/RunCMake/Autogen/AutogenSkipLinting-build-stderr.txt deleted file mode 100644 index 8d98f9d..0000000 --- a/Tests/RunCMake/Autogen/AutogenSkipLinting-build-stderr.txt +++ /dev/null @@ -1 +0,0 @@ -.* diff --git a/Tests/RunCMake/Autogen/AutogenSkipLinting.cmake b/Tests/RunCMake/Autogen/AutogenSkipLinting.cmake deleted file mode 100644 index 3ce2092..0000000 --- a/Tests/RunCMake/Autogen/AutogenSkipLinting.cmake +++ /dev/null @@ -1,16 +0,0 @@ -enable_language(CXX) - -find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) - -set(CMAKE_AUTOMOC ON) -set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE "$<1:${PSEUDO_IWYU}>" -some -args) -set(CMAKE_CXX_CLANG_TIDY "$<1:${PSEUDO_TIDY}>" -bad) -set(CMAKE_CXX_CPPLINT "$<1:${PSEUDO_CPPLINT}>" --error) -set(CMAKE_CXX_CPPCHECK "$<1:${PSEUDO_CPPCHECK}>" -error) - -add_executable(SkipLinting SkipLinting.cxx SkipLinting.h) -set_source_files_properties(SkipLinting.cxx PROPERTIES SKIP_LINTING TRUE) - -target_link_libraries(SkipLinting Qt${with_qt_version}::Core - Qt${with_qt_version}::Widgets - Qt${with_qt_version}::Gui) diff --git a/Tests/RunCMake/Autogen/AutogenUseSystemIncludeCommon.cmake b/Tests/RunCMake/Autogen/AutogenUseSystemIncludeCommon.cmake deleted file mode 100644 index bbefd5f..0000000 --- a/Tests/RunCMake/Autogen/AutogenUseSystemIncludeCommon.cmake +++ /dev/null @@ -1,10 +0,0 @@ -enable_language(CXX) - -find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) - -set(CMAKE_AUTOMOC ON) - -add_library(dummy SHARED empty.cpp) -target_link_libraries(dummy Qt${with_qt_version}::Core - Qt${with_qt_version}::Widgets - Qt${with_qt_version}::Gui) diff --git a/Tests/RunCMake/Autogen/AutogenUseSystemIncludeOff.cmake b/Tests/RunCMake/Autogen/AutogenUseSystemIncludeOff.cmake deleted file mode 100644 index dfdbb98..0000000 --- a/Tests/RunCMake/Autogen/AutogenUseSystemIncludeOff.cmake +++ /dev/null @@ -1,3 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/AutogenUseSystemIncludeCommon.cmake") - -set_target_properties(dummy PROPERTIES AUTOGEN_USE_SYSTEM_INCLUDE OFF) diff --git a/Tests/RunCMake/Autogen/AutogenUseSystemIncludeOn.cmake b/Tests/RunCMake/Autogen/AutogenUseSystemIncludeOn.cmake deleted file mode 100644 index f556ed4..0000000 --- a/Tests/RunCMake/Autogen/AutogenUseSystemIncludeOn.cmake +++ /dev/null @@ -1,3 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/AutogenUseSystemIncludeCommon.cmake") - -set_target_properties(dummy PROPERTIES AUTOGEN_USE_SYSTEM_INCLUDE ON) diff --git a/Tests/RunCMake/Autogen/CMP0111-imported-target-full.cmake b/Tests/RunCMake/Autogen/CMP0111-imported-target-full.cmake deleted file mode 100644 index 331da64..0000000 --- a/Tests/RunCMake/Autogen/CMP0111-imported-target-full.cmake +++ /dev/null @@ -1,12 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/CMP0111-imported-target-prelude.cmake") - -set_location(executable LOCATION "${CMAKE_CURRENT_BINARY_DIR}/executable${CMAKE_EXECUTABLE_SUFFIX}") - -set_location(shared LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}shared${CMAKE_SHARED_LIBRARY_SUFFIX}") -if (CMAKE_IMPORT_LIBRARY_SUFFIX) - set_location(shared IMPLIB "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}shared${CMAKE_IMPORT_LIBRARY_SUFFIX}") -endif () - -set_location(static LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}static${CMAKE_STATIC_LIBRARY_SUFFIX}") -set_location(unknown LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}unknown${CMAKE_IMPORT_LIBRARY_SUFFIX}") -set_location(module LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_MODULE_PREFIX}module${CMAKE_SHARED_MODULE_SUFFIX}") diff --git a/Tests/RunCMake/Autogen/CMP0111-imported-target-implib-only.cmake b/Tests/RunCMake/Autogen/CMP0111-imported-target-implib-only.cmake deleted file mode 100644 index 8640fdc..0000000 --- a/Tests/RunCMake/Autogen/CMP0111-imported-target-implib-only.cmake +++ /dev/null @@ -1,13 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/CMP0111-imported-target-prelude.cmake") - -set_location(executable LOCATION "${CMAKE_CURRENT_BINARY_DIR}/executable${CMAKE_EXECUTABLE_SUFFIX}") - -if (CMAKE_IMPORT_LIBRARY_SUFFIX) - set_location(shared IMPLIB "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}shared${CMAKE_IMPORT_LIBRARY_SUFFIX}") -else () - set_location(shared LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}shared${CMAKE_SHARED_LIBRARY_SUFFIX}") -endif () - -set_location(static LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}static${CMAKE_STATIC_LIBRARY_SUFFIX}") -set_location(unknown LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}unknown${CMAKE_STATIC_LIBRARY_SUFFIX}") -set_location(module LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_MODULE_PREFIX}module${CMAKE_SHARED_MODULE_SUFFIX}") diff --git a/Tests/RunCMake/Autogen/CMP0111-imported-target-libname.cmake b/Tests/RunCMake/Autogen/CMP0111-imported-target-libname.cmake deleted file mode 100644 index e1318c2..0000000 --- a/Tests/RunCMake/Autogen/CMP0111-imported-target-libname.cmake +++ /dev/null @@ -1,14 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/CMP0111-imported-target-prelude.cmake") - -set_location(executable LOCATION "${CMAKE_CURRENT_BINARY_DIR}/executable${CMAKE_EXECUTABLE_SUFFIX}") - -set_location(shared LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}shared${CMAKE_SHARED_LIBRARY_SUFFIX}") -if (CMAKE_IMPORT_LIBRARY_SUFFIX) - set_location(shared IMPLIB "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}shared${CMAKE_IMPORT_LIBRARY_SUFFIX}") -endif () - -set_location(static LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}static${CMAKE_IMPORT_LIBRARY_SUFFIX}") -set_location(unknown LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}unknown${CMAKE_IMPORT_LIBRARY_SUFFIX}") -set_location(module LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_MODULE_PREFIX}module${CMAKE_SHARED_MODULE_SUFFIX}") - -set_location(interface LIBNAME "interface") diff --git a/Tests/RunCMake/Autogen/CMP0111-imported-target-prelude.cmake b/Tests/RunCMake/Autogen/CMP0111-imported-target-prelude.cmake deleted file mode 100644 index 6d26f99..0000000 --- a/Tests/RunCMake/Autogen/CMP0111-imported-target-prelude.cmake +++ /dev/null @@ -1,32 +0,0 @@ -enable_language(CXX) - -find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core) - -# Detect `-NOTFOUND` libraries at generate time. -cmake_policy(SET CMP0111 NEW) - -add_executable(imported::executable IMPORTED) -add_library(imported::shared SHARED IMPORTED) -add_library(imported::static STATIC IMPORTED) -add_library(imported::unknown UNKNOWN IMPORTED) -add_library(imported::interface INTERFACE IMPORTED) -add_library(imported::module MODULE IMPORTED) - -function (set_location target name loc) - set_property(TARGET "imported::${target}" PROPERTY - "IMPORTED_${name}" "${loc}") -endfunction () - -set(CMAKE_AUTOMOC 1) - -add_library(automoc - empty.cpp) -target_link_libraries(automoc - PRIVATE - imported::shared - imported::static - imported::unknown - imported::interface) -add_dependencies(automoc - imported::executable - imported::module) diff --git a/Tests/RunCMake/Autogen/CMP0151-common.cmake b/Tests/RunCMake/Autogen/CMP0151-common.cmake deleted file mode 100644 index bbefd5f..0000000 --- a/Tests/RunCMake/Autogen/CMP0151-common.cmake +++ /dev/null @@ -1,10 +0,0 @@ -enable_language(CXX) - -find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) - -set(CMAKE_AUTOMOC ON) - -add_library(dummy SHARED empty.cpp) -target_link_libraries(dummy Qt${with_qt_version}::Core - Qt${with_qt_version}::Widgets - Qt${with_qt_version}::Gui) diff --git a/Tests/RunCMake/Autogen/CMP0151-new.cmake b/Tests/RunCMake/Autogen/CMP0151-new.cmake deleted file mode 100644 index 9c77e58..0000000 --- a/Tests/RunCMake/Autogen/CMP0151-new.cmake +++ /dev/null @@ -1 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/CMP0151-common.cmake") diff --git a/Tests/RunCMake/Autogen/CMP0151-old.cmake b/Tests/RunCMake/Autogen/CMP0151-old.cmake deleted file mode 100644 index 9c77e58..0000000 --- a/Tests/RunCMake/Autogen/CMP0151-old.cmake +++ /dev/null @@ -1 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/CMP0151-common.cmake") diff --git a/Tests/RunCMake/Autogen/CMakeLists.txt b/Tests/RunCMake/Autogen/CMakeLists.txt deleted file mode 100644 index 2632ffa..0000000 --- a/Tests/RunCMake/Autogen/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -cmake_minimum_required(VERSION 3.16) -project(${RunCMake_TEST} NONE) -include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/Autogen/Inspect.cmake b/Tests/RunCMake/Autogen/Inspect.cmake deleted file mode 100644 index d5dc4b4..0000000 --- a/Tests/RunCMake/Autogen/Inspect.cmake +++ /dev/null @@ -1,13 +0,0 @@ -enable_language(CXX) - -set(info "") -foreach(var - CMAKE_INCLUDE_FLAG_CXX - CMAKE_INCLUDE_SYSTEM_FLAG_CXX - ) - if(DEFINED ${var}) - string(APPEND info "set(${var} \"${${var}}\")\n") - endif() -endforeach() - -file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}") diff --git a/Tests/RunCMake/Autogen/MocExample.cmake b/Tests/RunCMake/Autogen/MocExample.cmake deleted file mode 100644 index f06f8f6..0000000 --- a/Tests/RunCMake/Autogen/MocExample.cmake +++ /dev/null @@ -1,11 +0,0 @@ -enable_language(CXX) - -set(CMAKE_CXX_STANDARD 11) -find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) - -add_library(dummy STATIC example.cpp) -target_link_libraries(dummy Qt${with_qt_version}::Core - Qt${with_qt_version}::Widgets - Qt${with_qt_version}::Gui) - -set_target_properties(dummy PROPERTIES AUTOMOC ON) diff --git a/Tests/RunCMake/Autogen/MocGeneratedFile.cmake b/Tests/RunCMake/Autogen/MocGeneratedFile.cmake deleted file mode 100644 index 7bb55e9..0000000 --- a/Tests/RunCMake/Autogen/MocGeneratedFile.cmake +++ /dev/null @@ -1,15 +0,0 @@ -enable_language(CXX) - -find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core) - -set(CMAKE_AUTOMOC ON) - -set(GEN_SRC "class_$.cpp") -add_custom_command( - OUTPUT "${GEN_SRC}" - COMMAND ${CMAKE_COMMAND} -E echo "// cpp src" > "${GEN_SRC}" - VERBATIM -) - -add_library(libgen STATIC ${GEN_SRC}) -target_link_libraries(libgen Qt${with_qt_version}::Core) diff --git a/Tests/RunCMake/Autogen/MocPredefs-build-stderr.txt b/Tests/RunCMake/Autogen/MocPredefs-build-stderr.txt deleted file mode 100644 index 8d98f9d..0000000 --- a/Tests/RunCMake/Autogen/MocPredefs-build-stderr.txt +++ /dev/null @@ -1 +0,0 @@ -.* diff --git a/Tests/RunCMake/Autogen/MocPredefs-check.cxx b/Tests/RunCMake/Autogen/MocPredefs-check.cxx deleted file mode 100644 index 2b4791f..0000000 --- a/Tests/RunCMake/Autogen/MocPredefs-check.cxx +++ /dev/null @@ -1,60 +0,0 @@ -#include - -#include "check_predefs.h" - -#define TO_STRING(x) TO_STRING0(x) -#define TO_STRING0(x) #x - -int main() -{ - int ret = 0; -#if defined(__STRICT_ANSI__) -# if !defined(CHECK___STRICT_ANSI__) - std::cout << "__STRICT_ANSI__: Expected " << TO_STRING(__STRICT_ANSI__) - << " but it is not defined.\n"; - ret = 1; -# elif __STRICT_ANSI__ != CHECK___STRICT_ANSI__ - std::cout << "__STRICT_ANSI__: Expected " << TO_STRING(__STRICT_ANSI__) - << " but got: " << TO_STRING(CHECK___STRICT_ANSI__) << "\n"; - ret = 1; -# endif -#elif defined(CHECK___STRICT_ANSI__) - std::cout << "__STRICT_ANSI__: Expected undefined but got: " - << TO_STRING(CHECK___STRICT_ANSI__) << "\n"; - ret = 1; -#endif - -#if defined(__cplusplus) -# if !defined(CHECK___cplusplus) - std::cout << "__cplusplus: Expected " << TO_STRING(__cplusplus) - << " but it is not defined.\n"; - ret = 1; -# elif __cplusplus != CHECK___cplusplus - std::cout << "__cplusplus: Expected " << TO_STRING(__cplusplus) - << " but got: " << TO_STRING(CHECK___cplusplus) << "\n"; - ret = 1; -# endif -#elif defined(CHECK___cplusplus) - std::cout << "__cplusplus: Expected undefined but got: " - << TO_STRING(CHECK___cplusplus) << "\n"; - ret = 1; -#endif - -#if defined(_MSVC_LANG) -# if !defined(CHECK__MSVC_LANG) - std::cout << "_MSVC_LANG: Expected " << TO_STRING(_MSVC_LANG) - << " but it is not defined.\n"; - ret = 1; -# elif _MSVC_LANG != CHECK__MSVC_LANG - std::cout << "_MSVC_LANG: Expected " << TO_STRING(_MSVC_LANG) - << " but got: " << TO_STRING(CHECK__MSVC_LANG) << "\n"; - ret = 1; -# endif -#elif defined(CHECK__MSVC_LANG) - std::cout << "_MSVC_LANG: Expected undefined but got: " - << TO_STRING(CHECK__MSVC_LANG) << "\n"; - ret = 1; -#endif - - return ret; -} diff --git a/Tests/RunCMake/Autogen/MocPredefs-prefix.cmake b/Tests/RunCMake/Autogen/MocPredefs-prefix.cmake deleted file mode 100644 index 460a05d..0000000 --- a/Tests/RunCMake/Autogen/MocPredefs-prefix.cmake +++ /dev/null @@ -1,3 +0,0 @@ -file(READ ${in} predefs) -string(REGEX REPLACE "#define +" "#define CHECK_" predefs "${predefs}") -file(WRITE ${out} "${predefs}") diff --git a/Tests/RunCMake/Autogen/MocPredefs.cmake b/Tests/RunCMake/Autogen/MocPredefs.cmake deleted file mode 100644 index 8307e04..0000000 --- a/Tests/RunCMake/Autogen/MocPredefs.cmake +++ /dev/null @@ -1,39 +0,0 @@ -enable_language(CXX) - -find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core) - -set(CMAKE_AUTOMOC ON) -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_EXTENSIONS OFF) - -add_library(MocPredefs MocPredefs.cxx) - -if(NOT DEFINED CMAKE_CXX_COMPILER_PREDEFINES_COMMAND) - return() -endif() - -if(CMAKE_CXX_COMPILER_ID STREQUAL "LCC" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "1.26") - return() -endif() - -get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if(_isMultiConfig) - set(moc_predefs_h "moc_predefs_$.h") - set(check_dir "${CMAKE_CURRENT_BINARY_DIR}/$") -else() - set(moc_predefs_h "moc_predefs.h") - set(check_dir "${CMAKE_CURRENT_BINARY_DIR}") -endif() - -add_custom_command(TARGET MocPredefs POST_BUILD VERBATIM COMMAND - ${CMAKE_COMMAND} - -Din=${CMAKE_CURRENT_BINARY_DIR}/MocPredefs_autogen/${moc_predefs_h} - -Dout=${check_dir}/check_predefs.h - -P${CMAKE_CURRENT_SOURCE_DIR}/MocPredefs-prefix.cmake - ) - -add_executable(MocPredefs-check MocPredefs-check.cxx) -target_include_directories(MocPredefs-check PRIVATE ${check_dir}) -add_dependencies(MocPredefs-check MocPredefs) - -add_custom_target(MocPredefs-run-check ALL VERBATIM COMMAND MocPredefs-check) diff --git a/Tests/RunCMake/Autogen/MocPredefs.cxx b/Tests/RunCMake/Autogen/MocPredefs.cxx deleted file mode 100644 index b27cec5..0000000 --- a/Tests/RunCMake/Autogen/MocPredefs.cxx +++ /dev/null @@ -1,3 +0,0 @@ -void MocPredefs() -{ -} diff --git a/Tests/RunCMake/Autogen/MyWindow.cpp b/Tests/RunCMake/Autogen/MyWindow.cpp deleted file mode 100644 index d87c2e9..0000000 --- a/Tests/RunCMake/Autogen/MyWindow.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "MyWindow.h" - -MyWindow::MyWindow(QWidget* parent) - : QWidget(parent) -{ - this->m_ui.setupUi(this); -} diff --git a/Tests/RunCMake/Autogen/MyWindow.h b/Tests/RunCMake/Autogen/MyWindow.h deleted file mode 100644 index c267610..0000000 --- a/Tests/RunCMake/Autogen/MyWindow.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include - -#include "ui_MyWindow.h" - -class MyWindow : public QWidget -{ - Q_OBJECT - -public: - explicit MyWindow(QWidget* parent = nullptr); - -private: - Ui::MyWindow m_ui; -}; diff --git a/Tests/RunCMake/Autogen/MyWindow.ui b/Tests/RunCMake/Autogen/MyWindow.ui deleted file mode 100644 index fbf294c..0000000 --- a/Tests/RunCMake/Autogen/MyWindow.ui +++ /dev/null @@ -1,5 +0,0 @@ - - - MyWindow - - diff --git a/Tests/RunCMake/Autogen/NoQt-stderr.txt b/Tests/RunCMake/Autogen/NoQt-stderr.txt deleted file mode 100644 index 1c6660a..0000000 --- a/Tests/RunCMake/Autogen/NoQt-stderr.txt +++ /dev/null @@ -1,8 +0,0 @@ -^CMake Warning \(dev\) in CMakeLists.txt: - AUTOGEN: No valid Qt version found for target main. AUTOMOC, AUTOUIC and - AUTORCC disabled. Consider adding: - - find_package\(Qt COMPONENTS Widgets\) - - to your CMakeLists.txt file. -This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/Autogen/NoQt.cmake b/Tests/RunCMake/Autogen/NoQt.cmake deleted file mode 100644 index b2d375a..0000000 --- a/Tests/RunCMake/Autogen/NoQt.cmake +++ /dev/null @@ -1,6 +0,0 @@ -enable_language(CXX) - -add_executable(main empty.cpp) -set_property(TARGET main PROPERTY AUTOMOC 1) -set_property(TARGET main PROPERTY AUTORCC 1) -set_property(TARGET main PROPERTY AUTOUIC 1) diff --git a/Tests/RunCMake/Autogen/QtAutoMocDeps-stderr.txt b/Tests/RunCMake/Autogen/QtAutoMocDeps-stderr.txt deleted file mode 100644 index 6024984..0000000 --- a/Tests/RunCMake/Autogen/QtAutoMocDeps-stderr.txt +++ /dev/null @@ -1,8 +0,0 @@ -^CMake Deprecation Warning at QtSubDir1/CMakeLists\.txt:[0-9]+ \(cmake_policy\): - The OLD behavior for policy CMP0116 will be removed from a future version - of CMake\. - - The cmake-policies\(7\) manual explains that the OLD behaviors of all - policies are deprecated and that a policy should be set to OLD only under - specific short-term circumstances\. Projects should be ported to the NEW - behavior and not rely on setting a policy to OLD\.$ diff --git a/Tests/RunCMake/Autogen/QtAutoMocDeps.cmake b/Tests/RunCMake/Autogen/QtAutoMocDeps.cmake deleted file mode 100644 index fc3b2f2..0000000 --- a/Tests/RunCMake/Autogen/QtAutoMocDeps.cmake +++ /dev/null @@ -1,23 +0,0 @@ -enable_language(CXX) - -find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) - -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 Qt${with_qt_version}::Core) - -if(${with_qt_version}Widgets_DIR) - 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 Qt${with_qt_version}::Widgets) - target_include_directories(app_with_widget PRIVATE "${CMAKE_BINARY_DIR}") -endif() -add_subdirectory(QtSubDir1) -add_subdirectory(QtSubDir2) -add_subdirectory(QtSubDir3) diff --git a/Tests/RunCMake/Autogen/QtInFunction.cmake b/Tests/RunCMake/Autogen/QtInFunction.cmake deleted file mode 100644 index 6c42cc2..0000000 --- a/Tests/RunCMake/Autogen/QtInFunction.cmake +++ /dev/null @@ -1,13 +0,0 @@ -enable_language(CXX) - -function (use_autogen target) - 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) -endfunction () - -add_executable(main empty.cpp) -use_autogen(main) diff --git a/Tests/RunCMake/Autogen/QtInFunctionNested-stderr.txt b/Tests/RunCMake/Autogen/QtInFunctionNested-stderr.txt deleted file mode 100644 index 1c6660a..0000000 --- a/Tests/RunCMake/Autogen/QtInFunctionNested-stderr.txt +++ /dev/null @@ -1,8 +0,0 @@ -^CMake Warning \(dev\) in CMakeLists.txt: - AUTOGEN: No valid Qt version found for target main. AUTOMOC, AUTOUIC and - AUTORCC disabled. Consider adding: - - find_package\(Qt COMPONENTS Widgets\) - - to your CMakeLists.txt file. -This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/Autogen/QtInFunctionNested.cmake b/Tests/RunCMake/Autogen/QtInFunctionNested.cmake deleted file mode 100644 index 2e7b8ad..0000000 --- a/Tests/RunCMake/Autogen/QtInFunctionNested.cmake +++ /dev/null @@ -1,17 +0,0 @@ -enable_language(CXX) - -function (use_autogen target) - 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) -endfunction () - -function (wrap_autogen target) - use_autogen("${target}") -endfunction () - -add_executable(main empty.cpp) -wrap_autogen(main) diff --git a/Tests/RunCMake/Autogen/QtInFunctionProperty.cmake b/Tests/RunCMake/Autogen/QtInFunctionProperty.cmake deleted file mode 100644 index d9296c4..0000000 --- a/Tests/RunCMake/Autogen/QtInFunctionProperty.cmake +++ /dev/null @@ -1,21 +0,0 @@ -enable_language(CXX) - -function (use_autogen target) - find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets) - set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - PROPERTY - Qt${with_qt_version}Core_VERSION_MAJOR "${Qt${with_qt_version}Core_VERSION_MAJOR}") - set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - PROPERTY - 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) -endfunction () - -function (wrap_autogen target) - use_autogen("${target}") -endfunction () - -add_executable(main empty.cpp) -wrap_autogen(main) diff --git a/Tests/RunCMake/Autogen/QtSubDir1/CMakeLists.txt b/Tests/RunCMake/Autogen/QtSubDir1/CMakeLists.txt deleted file mode 100644 index f215b9e..0000000 --- a/Tests/RunCMake/Autogen/QtSubDir1/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -cmake_policy(SET CMP0116 OLD) - -add_executable(sub_exe_1 ../app.cpp) -target_link_libraries(sub_exe_1 PRIVATE Qt${with_qt_version}::Core) diff --git a/Tests/RunCMake/Autogen/QtSubDir2/CMakeLists.txt b/Tests/RunCMake/Autogen/QtSubDir2/CMakeLists.txt deleted file mode 100644 index cccb1e0..0000000 --- a/Tests/RunCMake/Autogen/QtSubDir2/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -cmake_policy(SET CMP0116 NEW) - -add_executable(sub_exe_2 ../app.cpp) -target_link_libraries(sub_exe_2 PRIVATE Qt${with_qt_version}::Core) diff --git a/Tests/RunCMake/Autogen/QtSubDir3/CMakeLists.txt b/Tests/RunCMake/Autogen/QtSubDir3/CMakeLists.txt deleted file mode 100644 index d268bfe..0000000 --- a/Tests/RunCMake/Autogen/QtSubDir3/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -add_executable(sub_exe_3 ../app.cpp) -target_link_libraries(sub_exe_3 PRIVATE Qt${with_qt_version}::Core) diff --git a/Tests/RunCMake/Autogen/RccExample.cmake b/Tests/RunCMake/Autogen/RccExample.cmake deleted file mode 100644 index ade0fef..0000000 --- a/Tests/RunCMake/Autogen/RccExample.cmake +++ /dev/null @@ -1,15 +0,0 @@ -enable_language(CXX) - -set(CMAKE_CXX_STANDARD 11) -find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) - -add_library(dummy STATIC example.cpp data.qrc) -target_link_libraries(dummy Qt${with_qt_version}::Core - Qt${with_qt_version}::Widgets - Qt${with_qt_version}::Gui) - -set_target_properties(dummy PROPERTIES AUTORCC ON) - -if(DEFINED ZSTD_VALUE) - set(QT_FEATURE_zstd ${ZSTD_VALUE}) -endif() diff --git a/Tests/RunCMake/Autogen/RunCMakeTest.cmake b/Tests/RunCMake/Autogen/RunCMakeTest.cmake deleted file mode 100644 index 0036551..0000000 --- a/Tests/RunCMake/Autogen/RunCMakeTest.cmake +++ /dev/null @@ -1,487 +0,0 @@ -include(RunCMake) - -run_cmake(NoQt) -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) - - run_cmake(CMP0111-imported-target-full) - run_cmake(CMP0111-imported-target-libname) - run_cmake(CMP0111-imported-target-implib-only) - - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/MocPredefs-build) - run_cmake(MocPredefs) - set(RunCMake_TEST_NO_CLEAN 1) - run_cmake_command(MocPredefs-build ${CMAKE_COMMAND} --build . --config Debug) - endblock() - - # Detect information from the toolchain: - # - CMAKE_INCLUDE_FLAG_CXX - # - CMAKE_INCLUDE_SYSTEM_FLAG_CXX - run_cmake(Inspect) - include("${RunCMake_BINARY_DIR}/Inspect-build/info.cmake") - - if(CMAKE_INCLUDE_SYSTEM_FLAG_CXX) - if(RunCMake_GENERATOR MATCHES "Visual Studio") - string(REGEX REPLACE "^-" "/" test_expect_stdout "${CMAKE_INCLUDE_SYSTEM_FLAG_CXX}") - else() - set(test_expect_stdout "-*${CMAKE_INCLUDE_SYSTEM_FLAG_CXX}") - endif() - string(APPEND test_expect_stdout " *(\"[^\"]*|([^ ]|\\ )*)[\\/]dummy_autogen[\\/]include") - if(RunCMake_GENERATOR_IS_MULTI_CONFIG) - string(APPEND test_expect_stdout "_Debug") - endif() - - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/CMP0151-new-build) - run_cmake_with_options(CMP0151-new ${RunCMake_TEST_OPTIONS} -DCMAKE_POLICY_DEFAULT_CMP0151=NEW) - set(RunCMake_TEST_NO_CLEAN 1) - set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}") - message(STATUS "RunCMake_TEST_EXPECT_stdout: ${RunCMake_TEST_EXPECT_stdout}") - run_cmake_command(CMP0151-new-build ${CMAKE_COMMAND} --build . --config Debug --verbose) - endblock() - - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AutogenUseSystemIncludeOn-build) - run_cmake_with_options(AutogenUseSystemIncludeOn ${RunCMake_TEST_OPTIONS} -DCMAKE_POLICY_DEFAULT_CMP0151=NEW) - set(RunCMake_TEST_NO_CLEAN 1) - set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}") - message(STATUS "RunCMake_TEST_EXPECT_stdout: ${RunCMake_TEST_EXPECT_stdout}") - run_cmake_command(AutogenUseSystemIncludeOn ${CMAKE_COMMAND} --build . --config Debug --verbose) - endblock() - endif() - - if(CMAKE_INCLUDE_FLAG_CXX) - if(RunCMake_GENERATOR MATCHES "Visual Studio") - string(REGEX REPLACE "^-" "/" test_expect_stdout "${CMAKE_INCLUDE_FLAG_CXX}") - else() - set(test_expect_stdout "-*${CMAKE_INCLUDE_FLAG_CXX}") - endif() - string(APPEND test_expect_stdout " *(\"[^\"]*|([^ ]|\\ )*)[\\/]dummy_autogen[\\/]include") - if(RunCMake_GENERATOR_IS_MULTI_CONFIG) - string(APPEND test_expect_stdout "_Debug") - endif() - - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/CMP0151-old-build) - run_cmake_with_options(CMP0151-old ${RunCMake_TEST_OPTIONS} -DCMAKE_POLICY_DEFAULT_CMP0151=OLD) - set(RunCMake_TEST_NO_CLEAN 1) - set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}") - message(STATUS "RunCMake_TEST_EXPECT_stdout: ${RunCMake_TEST_EXPECT_stdout}") - run_cmake_command(CMP0151-old-build ${CMAKE_COMMAND} --build . --config Debug --verbose) - endblock() - - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AutogenUseSystemIncludeOff-build) - run_cmake_with_options(AutogenUseSystemIncludeOff ${RunCMake_TEST_OPTIONS} -DCMAKE_POLICY_DEFAULT_CMP0151=NEW) - set(RunCMake_TEST_NO_CLEAN 1) - set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}") - message(STATUS "RunCMake_TEST_EXPECT_stdout: ${RunCMake_TEST_EXPECT_stdout}") - run_cmake_command(AutogenUseSystemIncludeOff ${CMAKE_COMMAND} --build . --config Debug --verbose) - endblock() - - if(RunCMake_GENERATOR MATCHES "Make|Ninja") - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AutogenSkipLinting-build) - list(APPEND RunCMake_TEST_OPTIONS - "-DPSEUDO_CPPCHECK=${PSEUDO_CPPCHECK}" - "-DPSEUDO_CPPLINT=${PSEUDO_CPPLINT}" - "-DPSEUDO_IWYU=${PSEUDO_IWYU}" - "-DPSEUDO_TIDY=${PSEUDO_TIDY}") - - run_cmake(AutogenSkipLinting) - set(RunCMake_TEST_NO_CLEAN 1) - run_cmake_command(AutogenSkipLinting-build ${CMAKE_COMMAND} --build . --config Debug --verbose) - endblock() - endif() - endif() - - if(RunCMake_GENERATOR_IS_MULTI_CONFIG AND NOT RunCMake_GENERATOR MATCHES "Xcode") - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/MocGeneratedFile-build) - run_cmake(MocGeneratedFile) - set(RunCMake_TEST_NO_CLEAN 1) - run_cmake_command(MocGeneratedFile-build ${CMAKE_COMMAND} --build . --config Debug --verbose) - endblock() - if(RunCMake_GENERATOR MATCHES "Ninja Multi-Config") - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/MocGeneratedFile-cross-config-build) - list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_CROSS_CONFIGS=all) - run_cmake(MocGeneratedFile) - set(RunCMake_TEST_NO_CLEAN 1) - run_cmake_command(MocGeneratedFile-cross-config-build ${CMAKE_COMMAND} --build . --config Release --target libgen:Debug) - run_cmake_command(MocGeneratedFile-cross-config-build ${CMAKE_COMMAND} --build . --config Debug --target libgen:Release) - endblock() - endif() - endif() - - if(RunCMake_GENERATOR MATCHES "Make|Ninja") - block() - if(QtCore_VERSION VERSION_GREATER_EQUAL 5.15.0) - if (RunCMake_GENERATOR MATCHES "Ninja Multi-Config") - set(config_list Debug Release RelWithDebInfo) - set(use_better_graph_list ON OFF) - else() - set(config_list single-config) - set(use_better_graph_list OFF) - endif() - - foreach(use_better_graph IN ITEMS ${use_better_graph_list}) - foreach(config IN ITEMS ${config_list}) - block() - if (config STREQUAL "single-config") - set(config_suffix "") - else() - set(config_path "_${config}") - if (use_better_graph) - set(config_suffix "_${config}") - endif() - endif() - - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/QtAutoMocDeps${config_path}-build) - run_cmake_with_options(QtAutoMocDeps ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=${use_better_graph}) - set(RunCMake_TEST_NO_CLEAN 1) - # Build the project. - if (config STREQUAL "single-config") - set(config_param "") - else() - set(config_param "--config ${config}") - endif() - run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose ${config_param}) - # Touch just the library source file, which shouldn't cause a rerun of AUTOMOC - # for app_with_qt target. - file(TOUCH "${RunCMake_SOURCE_DIR}/simple_lib.cpp") - set(RunCMake_TEST_NOT_EXPECT_stdout "Automatic MOC for target app_with_qt|\ -Automatic MOC for target sub_exe_1|\ -Automatic MOC for target sub_exe_2") - set(RunCMake_TEST_VARIANT_DESCRIPTION "-Don't execute AUTOMOC for 'app_with_qt', 'sub_exe_1' and 'sub_exe_2'") - # Build and assert that AUTOMOC was not run for app_with_qt, sub_exe_1 and sub_exe_2. - run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose ${config_param}) - unset(RunCMake_TEST_VARIANT_DESCRIPTION) - unset(RunCMake_TEST_NOT_EXPECT_stdout) - - macro(check_file_exists file) - if (EXISTS "${file}") - set(check_result "PASSED") - set(message_type "STATUS") - else() - set(check_result "FAILED") - set(message_type "FATAL_ERROR") - endif() - - message(${message_type} "QtAutoMocDeps-build-\"${file}\" was generated - ${check_result}") - endmacro() - - check_file_exists("${RunCMake_TEST_BINARY_DIR}/app_with_qt_autogen/deps${config_suffix}") - check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir1/sub_exe_1_autogen/deps${config_suffix}") - check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir2/sub_exe_2_autogen/deps${config_suffix}") - - check_file_exists("${RunCMake_TEST_BINARY_DIR}/app_with_qt_autogen/timestamp${config_suffix}") - check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir1/sub_exe_1_autogen/timestamp${config_suffix}") - check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir2/sub_exe_2_autogen/timestamp${config_suffix}") - - # Touch a header file to make sure an automoc dependency cycle is not introduced. - file(TOUCH "${RunCMake_SOURCE_DIR}/MyWindow.h") - set(RunCMake_TEST_VARIANT_DESCRIPTION "-First build after touch to detect dependency cycle") - run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose) - # Need to run a second time to hit the dependency cycle. - set(RunCMake_TEST_VARIANT_DESCRIPTION "-Don't hit dependency cycle") - run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose) - endblock() - endforeach() - endforeach() - endif() - endblock() - endif() - - function(run_make_program dir) - execute_process( - COMMAND "${RunCMake_MAKE_PROGRAM}" ${ARGN} - WORKING_DIRECTORY "${dir}" - OUTPUT_VARIABLE make_program_stdout - ERROR_VARIABLE make_program_stderr - RESULT_VARIABLE make_program_result - ) - if (NOT DEFINED RunMakeProgram_expected_result) - set(RunMakeProgram_expected_result 0) - endif() - if(NOT "${make_program_result}" MATCHES "${RunMakeProgram_expected_result}") - message(STATUS " -============ beginning of ${RunCMake_MAKE_PROGRAM}'s stdout ============ -${make_program_stdout} -=============== end of ${RunCMake_MAKE_PROGRAM}'s stdout =============== -") - message(STATUS " -============ beginning of ${RunCMake_MAKE_PROGRAM}'s stderr ============ -${make_program_stderr} -=============== end of ${RunCMake_MAKE_PROGRAM}'s stderr =============== -") - message(FATAL_ERROR - "top ${RunCMake_MAKE_PROGRAM} build failed exited with status ${make_program_result}") - endif() - set(make_program_stdout "${make_program_stdout}" PARENT_SCOPE) - endfunction(run_make_program) - - function(count_substring STRING SUBSTRING COUNT_VAR) - string(LENGTH "${STRING}" STRING_LENGTH) - string(LENGTH "${SUBSTRING}" SUBSTRING_LENGTH) - if (SUBSTRING_LENGTH EQUAL 0) - message(FATAL_ERROR "SUBSTRING_LENGTH is 0") - endif() - - if (STRING_LENGTH EQUAL 0) - message(FATAL_ERROR "STRING_LENGTH is 0") - endif() - - if (STRING_LENGTH LESS SUBSTRING_LENGTH) - message(FATAL_ERROR "STRING_LENGTH is less than SUBSTRING_LENGTH") - endif() - - set(COUNT 0) - string(FIND "${STRING}" "${SUBSTRING}" SUBSTRING_START) - while(SUBSTRING_START GREATER_EQUAL 0) - math(EXPR COUNT "${COUNT} + 1") - math(EXPR SUBSTRING_START "${SUBSTRING_START} + ${SUBSTRING_LENGTH}") - string(SUBSTRING "${STRING}" ${SUBSTRING_START} -1 STRING) - string(FIND "${STRING}" "${SUBSTRING}" SUBSTRING_START) - endwhile() - - set(${COUNT_VAR} ${COUNT} PARENT_SCOPE) - endfunction() - - function(expect_only_once make_program_stdout expected_output test_name) - count_substring("${make_program_stdout}" "${expected_output}" count) - if(NOT count EQUAL 1) - message(STATUS "${test_name}-expect_only_once - FAILED") - message(FATAL_ERROR "Expected to find ${expected_output} exactly once in ${make_program_stdout} but found ${count} occurrences of ${expected_output}") - else() - message(STATUS "${test_name}-expect_only_once - PASSED") - endif() - endfunction() - - function(expect_n_times string_to_check expected_output expected_count test_name) - count_substring("${string_to_check}" "${expected_output}" count) - if(NOT count EQUAL ${expected_count}) - message(STATUS "${test_name}-expect_${expected_count}_times - FAILED") - message(FATAL_ERROR "Expected to find ${expected_output} exactly ${expected_count} times in ${string_to_check} but found ${count} occurrences of ${expected_output}") - else() - message(STATUS "${test_name}-expect_${expected_count}_times - PASSED") - endif() - endfunction() - - function(not_expect make_program_stdout unexpected_output test_name) - count_substring("${make_program_stdout}" "${unexpected_output}" count) - if(NOT count EQUAL 0) - message(STATUS "${test_name}-not_expect - FAILED") - message(FATAL_ERROR "Expected to find ${unexpected_output} exactly 0 times in ${make_program_stdout} but found ${count} occurrences of ${unexpected_output}") - else() - message(STATUS "${test_name}-not_expect - PASSED") - endif() - endfunction() - - if (QtCore_VERSION VERSION_GREATER_EQUAL 5.15.0) - foreach(exe IN ITEMS Moc Uic Rcc) - if(RunCMake_GENERATOR MATCHES "Ninja Multi-Config") - block() - set(RunCMake_TEST_VARIANT_DESCRIPTION "-CMake-configure") - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig-multi-config-build) - run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON -DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=ON) - unset(RunCMake_TEST_VARIANT_DESCRIPTION) - set(RunCMake_TEST_NO_CLEAN 1) - foreach(config IN ITEMS Debug Release RelWithDebInfo) - block() - set(RunCMake_TEST_EXPECT_stdout ".*running_exe_${config}*") - set(RunCMake_TEST_VARIANT_DESCRIPTION "-${config}-expect_running_exe_${config}") - run_cmake_command(Auto${exe}ExecutableConfig-multi-config-build ${CMAKE_COMMAND} --build . --config ${config}) - endblock() - endforeach() - set(RunCMake_TEST_EXPECT_stdout "ninja: no work to do") - foreach(config IN ITEMS Debug Release RelWithDebInfo) - block() - set(RunCMake_TEST_VARIANT_DESCRIPTION "-${config}-expect_no_work_to_do") - run_cmake_command(Auto${exe}ExecutableConfig-multi-config-build ${CMAKE_COMMAND} --build . --config ${config}) - endblock() - endforeach() - endblock() - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig-build) - run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON -DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=ON) - foreach(config IN ITEMS Debug Release RelWithDebInfo) - block() - run_make_program(${RunCMake_TEST_BINARY_DIR} --verbose -f build-${config}.ninja) - - set(expected_output "running_exe_${config}") - expect_only_once("${make_program_stdout}" "${expected_output}" "Auto${exe}ExecutableConfig-${config}-${expected_output}") - - foreach(sub_config IN ITEMS Debug Release RelWithDebInfo) - if(NOT sub_config STREQUAL config) - set(unexpected_output "running_exe_${sub_config}") - not_expect("${make_program_stdout}" "${unexpected_output}" "Auto${exe}ExecutableConfig-${config}-${unexpected_output}") - endif() - endforeach() - - if (exe STREQUAL "Moc" OR exe STREQUAL "Uic") - set(expected_output "cmake_autogen") - else() - set(expected_output "cmake_autorcc") - endif() - expect_only_once("${make_program_stdout}" "${expected_output}" "Auto${exe}ExecutableConfig-${config}-${expected_output}") - endblock() - endforeach() - endblock() - block() - foreach(ninja_config IN ITEMS Debug Release RelWithDebInfo) - foreach(target_config IN ITEMS Debug Release RelWithDebInfo) - block() - set(TEST_SUFFIX "-CrossConfig-${ninja_config}-${target_config}") - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig${TEST_SUFFIX}-build) - set(RunCMake_TEST_VARIANT_DESCRIPTION ${TEST_SUFFIX}) - run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_CROSS_CONFIGS=all -DCMAKE_DEFAULT_BUILD_TYPE=${ninja_config} -DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=ON) - unset(RunCMake_TEST_VARIANT_DESCRIPTION) - - run_make_program(${RunCMake_TEST_BINARY_DIR} --verbose -f build-${ninja_config}.ninja dummy:${target_config}) - - set(expected_output "running_exe_${ninja_config}") - expect_only_once("${make_program_stdout}" "${expected_output}" "Auto${exe}ExecutableConfig${TEST_SUFFIX}-${expected_output}") - - foreach(sub_config IN ITEMS Debug Release RelWithDebInfo) - if(NOT sub_config STREQUAL ninja_config) - set(unexpected_output "running_exe_${sub_config}") - not_expect("${make_program_stdout}" "${unexpected_output}" "Auto${exe}ExecutableConfig${TEST_SUFFIX}-${unexpected_output}") - endif() - endforeach() - - if (exe STREQUAL "Moc" OR exe STREQUAL "Uic") - set(expected_output "cmake_autogen") - else() - set(expected_output "cmake_autorcc") - endif() - expect_only_once("${make_program_stdout}" "${expected_output}" "Auto${exe}ExecutableConfig${TEST_SUFFIX}-${expected_output}") - endblock() - endforeach() - endforeach() - endblock() - block() - foreach(ninja_config IN ITEMS Debug Release RelWithDebInfo) - set(TEST_SUFFIX "-CrossConfig-${ninja_config}-all-all") - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig${TEST_SUFFIX}-build) - set(RunCMake_TEST_VARIANT_DESCRIPTION ${TEST_SUFFIX}) - run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_CROSS_CONFIGS=all -DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=ON) - unset(RunCMake_TEST_VARIANT_DESCRIPTION) - run_make_program(${RunCMake_TEST_BINARY_DIR} --verbose -f build-${ninja_config}.ninja all:all) - endforeach() - endblock() - elseif (RunCMake_GENERATOR MATCHES "Ninja|Make") - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig-build) - foreach(config IN ITEMS Debug Release RelWithDebInfo) - block() - set(RunCMake_TEST_VARIANT_DESCRIPTION "-${config}") - run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_BUILD_TYPE=${config} -DCMAKE_AUTOGEN_VERBOSE=ON) - unset(RunCMake_TEST_VARIANT_DESCRIPTION) - set(RunCMake_TEST_NO_CLEAN 1) - set(RunCMake_TEST_EXPECT_stdout ".*running_exe_${config}*") - run_cmake_command(Auto${exe}ExecutableConfig-${config}-build ${CMAKE_COMMAND} --build .) - endblock() - endforeach() - endblock() - endif() - endforeach() - endif() - - # Visual Studio specific dependency tests - if (RunCMake_GENERATOR MATCHES "Visual Studio") - foreach(exe IN ITEMS Moc Uic Rcc) - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${exe}Example-build) - set(RunCMake_TEST_VARIANT_DESCRIPTION "-CMake-configure") - run_cmake_with_options(${exe}Example ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON) - unset(RunCMake_TEST_VARIANT_DESCRIPTION) - set(RunCMake_TEST_NO_CLEAN 1) - foreach(config IN ITEMS Debug Release RelWithDebInfo) - block() - set(RunCMake_TEST_VARIANT_DESCRIPTION "-${config}-first-build") - run_cmake_command(${exe}Example-build ${CMAKE_COMMAND} --build . --config ${config}) - endblock() - endforeach() - foreach(config IN ITEMS Debug Release RelWithDebInfo) - block() - if (exe STREQUAL "Moc" OR exe STREQUAL "Uic") - set(RunCMake_TEST_NOT_EXPECT_stdout "Auto${exe}") - set(not_expect_descripton "Auto${exe}") - else () - set(RunCMake_TEST_NOT_EXPECT_stdout "Auto${exe}") - set(not_expect_descripton "Auto${exe}") - endif() - set(RunCMake_TEST_VARIANT_DESCRIPTION "-second-build-${config}_expect_no_${not_expect_descripton}") - run_cmake_command(${exe}Example-build ${CMAKE_COMMAND} --build . --config ${config}) - endblock() - endforeach() - endblock() - endforeach() - endif() - - if (RunCMake_GENERATOR MATCHES "Xcode") - foreach(exe IN ITEMS Moc Uic Rcc) - block() - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${exe}Example-build) - set(RunCMake_TEST_VARIANT_DESCRIPTION "-CMake-configure") - set(RunCMake_TEST_EXPECT_stderr ".*") - run_cmake_with_options(${exe}Example ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON) - set(RunCMake_TEST_NO_CLEAN 1) - set(RunCMake_MAKE_PROGRAM ${CMAKE_COMMAND}) - run_make_program(${RunCMake_TEST_BINARY_DIR} --build . --config Debug) - if (exe STREQUAL "Moc") - set(expected_count 16) - elseif (exe STREQUAL "Uic") - set(expected_count 4) - else() - set(expected_count 12) - endif() - expect_n_times("${make_program_stdout}" "Auto${exe}:" ${expected_count} "${exe}Example-build-Auto${exe}") - expect_n_times("${make_program_stdout}" "Auto${exe}:" ${expected_count} "${exe}Example-build-Auto${exe}") - - if (exe STREQUAL "Moc" OR exe STREQUAL "Uic") - expect_n_times("${make_program_stdout}" "AutoGen:" 20 "${exe}Example-build-AutoGen:") - endif() - - foreach(config IN ITEMS Debug Release RelWithDebInfo) - block() - run_make_program(${RunCMake_TEST_BINARY_DIR} --build . --config ${config}) - not_expect("${make_program_stdout}" "Auto${exe}" "${exe}Example-${config}_Auto${exe}") - not_expect("${make_program_stdout}" "AutoGen:" "${exe}Example-${config}_AutoGen") - endblock() - endforeach() - endblock() - endforeach() - endif() - - if (QtCore_VERSION VERSION_GREATER_EQUAL 6) - if (RunCMake_GENERATOR MATCHES "Make|Ninja") - foreach(value IN ITEMS ON OFF) - block() - set(RunCMake_TEST_BINARY_DIR - ${RunCMake_BINARY_DIR}/RccNoZTSD-${value}-build) - run_cmake_with_options(RccExample ${RunCMake_TEST_OPTIONS} - -DCMAKE_AUTOGEN_VERBOSE=ON -DZSTD_VALUE=${value}) - if (value STREQUAL "OFF") - set(RunCMake_TEST_EXPECT_stdout "--no-zstd") - else() - set(RunCMake_TEST_NOT_EXPECT_stdout "--no-zstd") - endif() - set(RunCMake_TEST_NO_CLEAN 1) - run_cmake_command(RccNoZTSD-${value}-build ${CMAKE_COMMAND} - --build . --config Debug) - endblock() - endforeach() - endif() - endif() -endif () diff --git a/Tests/RunCMake/Autogen/SkipLinting.cxx b/Tests/RunCMake/Autogen/SkipLinting.cxx deleted file mode 100644 index 9e09b27..0000000 --- a/Tests/RunCMake/Autogen/SkipLinting.cxx +++ /dev/null @@ -1,6 +0,0 @@ -#include "SkipLinting.h" - -int main() -{ - return 0; -} diff --git a/Tests/RunCMake/Autogen/SkipLinting.h b/Tests/RunCMake/Autogen/SkipLinting.h deleted file mode 100644 index def56a0..0000000 --- a/Tests/RunCMake/Autogen/SkipLinting.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef SKIP_LINTING_H -#define SKIP_LINTING_H - -#include - -class SkipMe : public QObject -{ - Q_OBJECT -}; - -#endif diff --git a/Tests/RunCMake/Autogen/UicExample.cmake b/Tests/RunCMake/Autogen/UicExample.cmake deleted file mode 100644 index 4b1f8c1..0000000 --- a/Tests/RunCMake/Autogen/UicExample.cmake +++ /dev/null @@ -1,11 +0,0 @@ -enable_language(CXX) - -set(CMAKE_CXX_STANDARD 11) -find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) - -add_library(dummy STATIC example_ui.cpp uiA.ui) -target_link_libraries(dummy Qt${with_qt_version}::Core - Qt${with_qt_version}::Widgets - Qt${with_qt_version}::Gui) - -set_target_properties(dummy PROPERTIES AUTOUIC ON) diff --git a/Tests/RunCMake/Autogen/app.cpp b/Tests/RunCMake/Autogen/app.cpp deleted file mode 100644 index 57380e4..0000000 --- a/Tests/RunCMake/Autogen/app.cpp +++ /dev/null @@ -1,6 +0,0 @@ -int main(int argc, char* argv[]) -{ - (void)argc; - (void)argv; - return 0; -} diff --git a/Tests/RunCMake/Autogen/app_qt.cpp b/Tests/RunCMake/Autogen/app_qt.cpp deleted file mode 100644 index 302c672..0000000 --- a/Tests/RunCMake/Autogen/app_qt.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include - -class Mango : public QObject -{ - Q_OBJECT -public: -Q_SIGNALS: - void eatFruit(); -}; - -#include "app_qt.moc" diff --git a/Tests/RunCMake/Autogen/data.qrc b/Tests/RunCMake/Autogen/data.qrc deleted file mode 100644 index 9bd068c..0000000 --- a/Tests/RunCMake/Autogen/data.qrc +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Tests/RunCMake/Autogen/empty.cpp b/Tests/RunCMake/Autogen/empty.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/Tests/RunCMake/Autogen/example.cpp b/Tests/RunCMake/Autogen/example.cpp deleted file mode 100644 index 7f1a781..0000000 --- a/Tests/RunCMake/Autogen/example.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "example.h" - -Example::Example() -{ -} diff --git a/Tests/RunCMake/Autogen/example.h b/Tests/RunCMake/Autogen/example.h deleted file mode 100644 index e8bfa42..0000000 --- a/Tests/RunCMake/Autogen/example.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef EXAMPLE_H -#define EXAMPLE_H - -#include - -class Example : public QObject -{ - Q_OBJECT - Example(); -}; - -#endif diff --git a/Tests/RunCMake/Autogen/example_ui.cpp b/Tests/RunCMake/Autogen/example_ui.cpp deleted file mode 100644 index fb97c32..0000000 --- a/Tests/RunCMake/Autogen/example_ui.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "example_ui.h" - -Example::Example() -{ -} diff --git a/Tests/RunCMake/Autogen/example_ui.h b/Tests/RunCMake/Autogen/example_ui.h deleted file mode 100644 index d691133..0000000 --- a/Tests/RunCMake/Autogen/example_ui.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef EXAMPLE_UI_H -#define EXAMPLE_UI_H - -#include - -#include "ui_uiA.h" - -class Example : public QObject -{ - Q_OBJECT - Example(); -}; - -#endif diff --git a/Tests/RunCMake/Autogen/exe.cpp b/Tests/RunCMake/Autogen/exe.cpp deleted file mode 100644 index f8b643a..0000000 --- a/Tests/RunCMake/Autogen/exe.cpp +++ /dev/null @@ -1,4 +0,0 @@ -int main() -{ - return 0; -} diff --git a/Tests/RunCMake/Autogen/exe_common.h b/Tests/RunCMake/Autogen/exe_common.h deleted file mode 100644 index 15311c6..0000000 --- a/Tests/RunCMake/Autogen/exe_common.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef EXE_COMMON_H -#define EXE_COMMON_H - -#include -#include -#include -#include - -inline int runRealExe(const int argc, char** argv) -{ - std::vector args; - std::string realMocPath; - std::string const pathArg = "EXE_PATH="; - std::string cmd; - if (argc > 1) { - for (int i = 1; i < argc; ++i) { - std::string const arg = argv[i]; - if (arg.find(pathArg) != std::string::npos) { - realMocPath = arg.substr(pathArg.length()); - // if EXE_PATH contains spaces, wrap it in quotes - if (realMocPath.find(" ") != std::string::npos) { - realMocPath = "\"" + realMocPath + "\""; - } - } else { - args.push_back(arg); - } - } - } -#ifdef _WIN32 - cmd += "cmd /C \""; -#endif - cmd += realMocPath + " "; - for (auto arg : args) { - // if arg contains spaces, wrap it in quotes - if (arg.find(' ') != std::string::npos) { - cmd += " \"" + arg + "\""; - } else { - cmd += " " + arg; - } - } -#ifdef _WIN32 - cmd += "\""; -#endif - std::cout << "Running real exe:" << cmd << std::endl; - return std::system(cmd.c_str()); -} - -#endif diff --git a/Tests/RunCMake/Autogen/exe_debug.cpp b/Tests/RunCMake/Autogen/exe_debug.cpp deleted file mode 100644 index ae5185b..0000000 --- a/Tests/RunCMake/Autogen/exe_debug.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include - -#include "exe_common.h" - -int main(int argc, char* argv[]) -{ - std::cout << "running_exe_Debug\n"; - return runRealExe(argc, argv); -} diff --git a/Tests/RunCMake/Autogen/exe_release.cpp b/Tests/RunCMake/Autogen/exe_release.cpp deleted file mode 100644 index 384c992..0000000 --- a/Tests/RunCMake/Autogen/exe_release.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include - -#include "exe_common.h" - -int main(int argc, char* argv[]) -{ - std::cout << "running_exe_Release\n"; - return runRealExe(argc, argv); -} diff --git a/Tests/RunCMake/Autogen/exe_relwithdebinfo.cpp b/Tests/RunCMake/Autogen/exe_relwithdebinfo.cpp deleted file mode 100644 index aa6c558..0000000 --- a/Tests/RunCMake/Autogen/exe_relwithdebinfo.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include - -#include "exe_common.h" - -int main(int argc, char* argv[]) -{ - std::cout << "running_exe_RelWithDebInfo\n"; - return runRealExe(argc, argv); -} diff --git a/Tests/RunCMake/Autogen/simple_lib.cpp b/Tests/RunCMake/Autogen/simple_lib.cpp deleted file mode 100644 index cf8d689..0000000 --- a/Tests/RunCMake/Autogen/simple_lib.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef _WIN32 -__declspec(dllexport) -#endif - void dummy_symbol() -{ -} diff --git a/Tests/RunCMake/Autogen/uiA.ui b/Tests/RunCMake/Autogen/uiA.ui deleted file mode 100644 index 4c5762e..0000000 --- a/Tests/RunCMake/Autogen/uiA.ui +++ /dev/null @@ -1,24 +0,0 @@ - - - UiA - - - - 0 - 0 - 400 - 300 - - - - Form - - - - - - - - - - diff --git a/Tests/RunCMake/Autogen_1/AutogenSkipLinting-build-stderr.txt b/Tests/RunCMake/Autogen_1/AutogenSkipLinting-build-stderr.txt new file mode 100644 index 0000000..8d98f9d --- /dev/null +++ b/Tests/RunCMake/Autogen_1/AutogenSkipLinting-build-stderr.txt @@ -0,0 +1 @@ +.* diff --git a/Tests/RunCMake/Autogen_1/AutogenSkipLinting.cmake b/Tests/RunCMake/Autogen_1/AutogenSkipLinting.cmake new file mode 100644 index 0000000..3ce2092 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/AutogenSkipLinting.cmake @@ -0,0 +1,16 @@ +enable_language(CXX) + +find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE "$<1:${PSEUDO_IWYU}>" -some -args) +set(CMAKE_CXX_CLANG_TIDY "$<1:${PSEUDO_TIDY}>" -bad) +set(CMAKE_CXX_CPPLINT "$<1:${PSEUDO_CPPLINT}>" --error) +set(CMAKE_CXX_CPPCHECK "$<1:${PSEUDO_CPPCHECK}>" -error) + +add_executable(SkipLinting SkipLinting.cxx SkipLinting.h) +set_source_files_properties(SkipLinting.cxx PROPERTIES SKIP_LINTING TRUE) + +target_link_libraries(SkipLinting Qt${with_qt_version}::Core + Qt${with_qt_version}::Widgets + Qt${with_qt_version}::Gui) diff --git a/Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeCommon.cmake b/Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeCommon.cmake new file mode 100644 index 0000000..bbefd5f --- /dev/null +++ b/Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeCommon.cmake @@ -0,0 +1,10 @@ +enable_language(CXX) + +find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) + +set(CMAKE_AUTOMOC ON) + +add_library(dummy SHARED empty.cpp) +target_link_libraries(dummy Qt${with_qt_version}::Core + Qt${with_qt_version}::Widgets + Qt${with_qt_version}::Gui) diff --git a/Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeOff.cmake b/Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeOff.cmake new file mode 100644 index 0000000..dfdbb98 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeOff.cmake @@ -0,0 +1,3 @@ +include("${CMAKE_CURRENT_LIST_DIR}/AutogenUseSystemIncludeCommon.cmake") + +set_target_properties(dummy PROPERTIES AUTOGEN_USE_SYSTEM_INCLUDE OFF) diff --git a/Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeOn.cmake b/Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeOn.cmake new file mode 100644 index 0000000..f556ed4 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/AutogenUseSystemIncludeOn.cmake @@ -0,0 +1,3 @@ +include("${CMAKE_CURRENT_LIST_DIR}/AutogenUseSystemIncludeCommon.cmake") + +set_target_properties(dummy PROPERTIES AUTOGEN_USE_SYSTEM_INCLUDE ON) diff --git a/Tests/RunCMake/Autogen_1/CMP0111-imported-target-full.cmake b/Tests/RunCMake/Autogen_1/CMP0111-imported-target-full.cmake new file mode 100644 index 0000000..331da64 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/CMP0111-imported-target-full.cmake @@ -0,0 +1,12 @@ +include("${CMAKE_CURRENT_LIST_DIR}/CMP0111-imported-target-prelude.cmake") + +set_location(executable LOCATION "${CMAKE_CURRENT_BINARY_DIR}/executable${CMAKE_EXECUTABLE_SUFFIX}") + +set_location(shared LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}shared${CMAKE_SHARED_LIBRARY_SUFFIX}") +if (CMAKE_IMPORT_LIBRARY_SUFFIX) + set_location(shared IMPLIB "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}shared${CMAKE_IMPORT_LIBRARY_SUFFIX}") +endif () + +set_location(static LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}static${CMAKE_STATIC_LIBRARY_SUFFIX}") +set_location(unknown LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}unknown${CMAKE_IMPORT_LIBRARY_SUFFIX}") +set_location(module LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_MODULE_PREFIX}module${CMAKE_SHARED_MODULE_SUFFIX}") diff --git a/Tests/RunCMake/Autogen_1/CMP0111-imported-target-implib-only.cmake b/Tests/RunCMake/Autogen_1/CMP0111-imported-target-implib-only.cmake new file mode 100644 index 0000000..8640fdc --- /dev/null +++ b/Tests/RunCMake/Autogen_1/CMP0111-imported-target-implib-only.cmake @@ -0,0 +1,13 @@ +include("${CMAKE_CURRENT_LIST_DIR}/CMP0111-imported-target-prelude.cmake") + +set_location(executable LOCATION "${CMAKE_CURRENT_BINARY_DIR}/executable${CMAKE_EXECUTABLE_SUFFIX}") + +if (CMAKE_IMPORT_LIBRARY_SUFFIX) + set_location(shared IMPLIB "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}shared${CMAKE_IMPORT_LIBRARY_SUFFIX}") +else () + set_location(shared LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}shared${CMAKE_SHARED_LIBRARY_SUFFIX}") +endif () + +set_location(static LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}static${CMAKE_STATIC_LIBRARY_SUFFIX}") +set_location(unknown LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}unknown${CMAKE_STATIC_LIBRARY_SUFFIX}") +set_location(module LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_MODULE_PREFIX}module${CMAKE_SHARED_MODULE_SUFFIX}") diff --git a/Tests/RunCMake/Autogen_1/CMP0111-imported-target-libname.cmake b/Tests/RunCMake/Autogen_1/CMP0111-imported-target-libname.cmake new file mode 100644 index 0000000..e1318c2 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/CMP0111-imported-target-libname.cmake @@ -0,0 +1,14 @@ +include("${CMAKE_CURRENT_LIST_DIR}/CMP0111-imported-target-prelude.cmake") + +set_location(executable LOCATION "${CMAKE_CURRENT_BINARY_DIR}/executable${CMAKE_EXECUTABLE_SUFFIX}") + +set_location(shared LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}shared${CMAKE_SHARED_LIBRARY_SUFFIX}") +if (CMAKE_IMPORT_LIBRARY_SUFFIX) + set_location(shared IMPLIB "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}shared${CMAKE_IMPORT_LIBRARY_SUFFIX}") +endif () + +set_location(static LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}static${CMAKE_IMPORT_LIBRARY_SUFFIX}") +set_location(unknown LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}unknown${CMAKE_IMPORT_LIBRARY_SUFFIX}") +set_location(module LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_MODULE_PREFIX}module${CMAKE_SHARED_MODULE_SUFFIX}") + +set_location(interface LIBNAME "interface") diff --git a/Tests/RunCMake/Autogen_1/CMP0111-imported-target-prelude.cmake b/Tests/RunCMake/Autogen_1/CMP0111-imported-target-prelude.cmake new file mode 100644 index 0000000..6d26f99 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/CMP0111-imported-target-prelude.cmake @@ -0,0 +1,32 @@ +enable_language(CXX) + +find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core) + +# Detect `-NOTFOUND` libraries at generate time. +cmake_policy(SET CMP0111 NEW) + +add_executable(imported::executable IMPORTED) +add_library(imported::shared SHARED IMPORTED) +add_library(imported::static STATIC IMPORTED) +add_library(imported::unknown UNKNOWN IMPORTED) +add_library(imported::interface INTERFACE IMPORTED) +add_library(imported::module MODULE IMPORTED) + +function (set_location target name loc) + set_property(TARGET "imported::${target}" PROPERTY + "IMPORTED_${name}" "${loc}") +endfunction () + +set(CMAKE_AUTOMOC 1) + +add_library(automoc + empty.cpp) +target_link_libraries(automoc + PRIVATE + imported::shared + imported::static + imported::unknown + imported::interface) +add_dependencies(automoc + imported::executable + imported::module) diff --git a/Tests/RunCMake/Autogen_1/CMP0151-common.cmake b/Tests/RunCMake/Autogen_1/CMP0151-common.cmake new file mode 100644 index 0000000..bbefd5f --- /dev/null +++ b/Tests/RunCMake/Autogen_1/CMP0151-common.cmake @@ -0,0 +1,10 @@ +enable_language(CXX) + +find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) + +set(CMAKE_AUTOMOC ON) + +add_library(dummy SHARED empty.cpp) +target_link_libraries(dummy Qt${with_qt_version}::Core + Qt${with_qt_version}::Widgets + Qt${with_qt_version}::Gui) diff --git a/Tests/RunCMake/Autogen_1/CMP0151-new.cmake b/Tests/RunCMake/Autogen_1/CMP0151-new.cmake new file mode 100644 index 0000000..9c77e58 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/CMP0151-new.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/CMP0151-common.cmake") diff --git a/Tests/RunCMake/Autogen_1/CMP0151-old.cmake b/Tests/RunCMake/Autogen_1/CMP0151-old.cmake new file mode 100644 index 0000000..9c77e58 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/CMP0151-old.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/CMP0151-common.cmake") diff --git a/Tests/RunCMake/Autogen_1/CMakeLists.txt b/Tests/RunCMake/Autogen_1/CMakeLists.txt new file mode 100644 index 0000000..2632ffa --- /dev/null +++ b/Tests/RunCMake/Autogen_1/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.16) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/Autogen_1/Inspect.cmake b/Tests/RunCMake/Autogen_1/Inspect.cmake new file mode 100644 index 0000000..d5dc4b4 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/Inspect.cmake @@ -0,0 +1,13 @@ +enable_language(CXX) + +set(info "") +foreach(var + CMAKE_INCLUDE_FLAG_CXX + CMAKE_INCLUDE_SYSTEM_FLAG_CXX + ) + if(DEFINED ${var}) + string(APPEND info "set(${var} \"${${var}}\")\n") + endif() +endforeach() + +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}") diff --git a/Tests/RunCMake/Autogen_1/MocGeneratedFile.cmake b/Tests/RunCMake/Autogen_1/MocGeneratedFile.cmake new file mode 100644 index 0000000..7bb55e9 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/MocGeneratedFile.cmake @@ -0,0 +1,15 @@ +enable_language(CXX) + +find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core) + +set(CMAKE_AUTOMOC ON) + +set(GEN_SRC "class_$.cpp") +add_custom_command( + OUTPUT "${GEN_SRC}" + COMMAND ${CMAKE_COMMAND} -E echo "// cpp src" > "${GEN_SRC}" + VERBATIM +) + +add_library(libgen STATIC ${GEN_SRC}) +target_link_libraries(libgen Qt${with_qt_version}::Core) diff --git a/Tests/RunCMake/Autogen_1/MocPredefs-build-stderr.txt b/Tests/RunCMake/Autogen_1/MocPredefs-build-stderr.txt new file mode 100644 index 0000000..8d98f9d --- /dev/null +++ b/Tests/RunCMake/Autogen_1/MocPredefs-build-stderr.txt @@ -0,0 +1 @@ +.* diff --git a/Tests/RunCMake/Autogen_1/MocPredefs-check.cxx b/Tests/RunCMake/Autogen_1/MocPredefs-check.cxx new file mode 100644 index 0000000..2b4791f --- /dev/null +++ b/Tests/RunCMake/Autogen_1/MocPredefs-check.cxx @@ -0,0 +1,60 @@ +#include + +#include "check_predefs.h" + +#define TO_STRING(x) TO_STRING0(x) +#define TO_STRING0(x) #x + +int main() +{ + int ret = 0; +#if defined(__STRICT_ANSI__) +# if !defined(CHECK___STRICT_ANSI__) + std::cout << "__STRICT_ANSI__: Expected " << TO_STRING(__STRICT_ANSI__) + << " but it is not defined.\n"; + ret = 1; +# elif __STRICT_ANSI__ != CHECK___STRICT_ANSI__ + std::cout << "__STRICT_ANSI__: Expected " << TO_STRING(__STRICT_ANSI__) + << " but got: " << TO_STRING(CHECK___STRICT_ANSI__) << "\n"; + ret = 1; +# endif +#elif defined(CHECK___STRICT_ANSI__) + std::cout << "__STRICT_ANSI__: Expected undefined but got: " + << TO_STRING(CHECK___STRICT_ANSI__) << "\n"; + ret = 1; +#endif + +#if defined(__cplusplus) +# if !defined(CHECK___cplusplus) + std::cout << "__cplusplus: Expected " << TO_STRING(__cplusplus) + << " but it is not defined.\n"; + ret = 1; +# elif __cplusplus != CHECK___cplusplus + std::cout << "__cplusplus: Expected " << TO_STRING(__cplusplus) + << " but got: " << TO_STRING(CHECK___cplusplus) << "\n"; + ret = 1; +# endif +#elif defined(CHECK___cplusplus) + std::cout << "__cplusplus: Expected undefined but got: " + << TO_STRING(CHECK___cplusplus) << "\n"; + ret = 1; +#endif + +#if defined(_MSVC_LANG) +# if !defined(CHECK__MSVC_LANG) + std::cout << "_MSVC_LANG: Expected " << TO_STRING(_MSVC_LANG) + << " but it is not defined.\n"; + ret = 1; +# elif _MSVC_LANG != CHECK__MSVC_LANG + std::cout << "_MSVC_LANG: Expected " << TO_STRING(_MSVC_LANG) + << " but got: " << TO_STRING(CHECK__MSVC_LANG) << "\n"; + ret = 1; +# endif +#elif defined(CHECK__MSVC_LANG) + std::cout << "_MSVC_LANG: Expected undefined but got: " + << TO_STRING(CHECK__MSVC_LANG) << "\n"; + ret = 1; +#endif + + return ret; +} diff --git a/Tests/RunCMake/Autogen_1/MocPredefs-prefix.cmake b/Tests/RunCMake/Autogen_1/MocPredefs-prefix.cmake new file mode 100644 index 0000000..460a05d --- /dev/null +++ b/Tests/RunCMake/Autogen_1/MocPredefs-prefix.cmake @@ -0,0 +1,3 @@ +file(READ ${in} predefs) +string(REGEX REPLACE "#define +" "#define CHECK_" predefs "${predefs}") +file(WRITE ${out} "${predefs}") diff --git a/Tests/RunCMake/Autogen_1/MocPredefs.cmake b/Tests/RunCMake/Autogen_1/MocPredefs.cmake new file mode 100644 index 0000000..8307e04 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/MocPredefs.cmake @@ -0,0 +1,39 @@ +enable_language(CXX) + +find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_EXTENSIONS OFF) + +add_library(MocPredefs MocPredefs.cxx) + +if(NOT DEFINED CMAKE_CXX_COMPILER_PREDEFINES_COMMAND) + return() +endif() + +if(CMAKE_CXX_COMPILER_ID STREQUAL "LCC" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "1.26") + return() +endif() + +get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(_isMultiConfig) + set(moc_predefs_h "moc_predefs_$.h") + set(check_dir "${CMAKE_CURRENT_BINARY_DIR}/$") +else() + set(moc_predefs_h "moc_predefs.h") + set(check_dir "${CMAKE_CURRENT_BINARY_DIR}") +endif() + +add_custom_command(TARGET MocPredefs POST_BUILD VERBATIM COMMAND + ${CMAKE_COMMAND} + -Din=${CMAKE_CURRENT_BINARY_DIR}/MocPredefs_autogen/${moc_predefs_h} + -Dout=${check_dir}/check_predefs.h + -P${CMAKE_CURRENT_SOURCE_DIR}/MocPredefs-prefix.cmake + ) + +add_executable(MocPredefs-check MocPredefs-check.cxx) +target_include_directories(MocPredefs-check PRIVATE ${check_dir}) +add_dependencies(MocPredefs-check MocPredefs) + +add_custom_target(MocPredefs-run-check ALL VERBATIM COMMAND MocPredefs-check) diff --git a/Tests/RunCMake/Autogen_1/MocPredefs.cxx b/Tests/RunCMake/Autogen_1/MocPredefs.cxx new file mode 100644 index 0000000..b27cec5 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/MocPredefs.cxx @@ -0,0 +1,3 @@ +void MocPredefs() +{ +} diff --git a/Tests/RunCMake/Autogen_1/NoQt-stderr.txt b/Tests/RunCMake/Autogen_1/NoQt-stderr.txt new file mode 100644 index 0000000..1c6660a --- /dev/null +++ b/Tests/RunCMake/Autogen_1/NoQt-stderr.txt @@ -0,0 +1,8 @@ +^CMake Warning \(dev\) in CMakeLists.txt: + AUTOGEN: No valid Qt version found for target main. AUTOMOC, AUTOUIC and + AUTORCC disabled. Consider adding: + + find_package\(Qt COMPONENTS Widgets\) + + to your CMakeLists.txt file. +This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/Autogen_1/NoQt.cmake b/Tests/RunCMake/Autogen_1/NoQt.cmake new file mode 100644 index 0000000..b2d375a --- /dev/null +++ b/Tests/RunCMake/Autogen_1/NoQt.cmake @@ -0,0 +1,6 @@ +enable_language(CXX) + +add_executable(main empty.cpp) +set_property(TARGET main PROPERTY AUTOMOC 1) +set_property(TARGET main PROPERTY AUTORCC 1) +set_property(TARGET main PROPERTY AUTOUIC 1) diff --git a/Tests/RunCMake/Autogen_1/QtInFunction.cmake b/Tests/RunCMake/Autogen_1/QtInFunction.cmake new file mode 100644 index 0000000..6c42cc2 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/QtInFunction.cmake @@ -0,0 +1,13 @@ +enable_language(CXX) + +function (use_autogen target) + 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) +endfunction () + +add_executable(main empty.cpp) +use_autogen(main) diff --git a/Tests/RunCMake/Autogen_1/QtInFunctionNested-stderr.txt b/Tests/RunCMake/Autogen_1/QtInFunctionNested-stderr.txt new file mode 100644 index 0000000..1c6660a --- /dev/null +++ b/Tests/RunCMake/Autogen_1/QtInFunctionNested-stderr.txt @@ -0,0 +1,8 @@ +^CMake Warning \(dev\) in CMakeLists.txt: + AUTOGEN: No valid Qt version found for target main. AUTOMOC, AUTOUIC and + AUTORCC disabled. Consider adding: + + find_package\(Qt COMPONENTS Widgets\) + + to your CMakeLists.txt file. +This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/Autogen_1/QtInFunctionNested.cmake b/Tests/RunCMake/Autogen_1/QtInFunctionNested.cmake new file mode 100644 index 0000000..2e7b8ad --- /dev/null +++ b/Tests/RunCMake/Autogen_1/QtInFunctionNested.cmake @@ -0,0 +1,17 @@ +enable_language(CXX) + +function (use_autogen target) + 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) +endfunction () + +function (wrap_autogen target) + use_autogen("${target}") +endfunction () + +add_executable(main empty.cpp) +wrap_autogen(main) diff --git a/Tests/RunCMake/Autogen_1/QtInFunctionProperty.cmake b/Tests/RunCMake/Autogen_1/QtInFunctionProperty.cmake new file mode 100644 index 0000000..d9296c4 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/QtInFunctionProperty.cmake @@ -0,0 +1,21 @@ +enable_language(CXX) + +function (use_autogen target) + find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets) + set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + PROPERTY + Qt${with_qt_version}Core_VERSION_MAJOR "${Qt${with_qt_version}Core_VERSION_MAJOR}") + set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + PROPERTY + 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) +endfunction () + +function (wrap_autogen target) + use_autogen("${target}") +endfunction () + +add_executable(main empty.cpp) +wrap_autogen(main) diff --git a/Tests/RunCMake/Autogen_1/RunCMakeTest.cmake b/Tests/RunCMake/Autogen_1/RunCMakeTest.cmake new file mode 100644 index 0000000..64add97 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/RunCMakeTest.cmake @@ -0,0 +1,125 @@ +include(RunCMake) + +run_cmake(NoQt) +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) + + run_cmake(CMP0111-imported-target-full) + run_cmake(CMP0111-imported-target-libname) + run_cmake(CMP0111-imported-target-implib-only) + + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/MocPredefs-build) + run_cmake(MocPredefs) + set(RunCMake_TEST_NO_CLEAN 1) + run_cmake_command(MocPredefs-build ${CMAKE_COMMAND} --build . --config Debug) + endblock() + + # Detect information from the toolchain: + # - CMAKE_INCLUDE_FLAG_CXX + # - CMAKE_INCLUDE_SYSTEM_FLAG_CXX + run_cmake(Inspect) + include("${RunCMake_BINARY_DIR}/Inspect-build/info.cmake") + + if(CMAKE_INCLUDE_SYSTEM_FLAG_CXX) + if(RunCMake_GENERATOR MATCHES "Visual Studio") + string(REGEX REPLACE "^-" "/" test_expect_stdout "${CMAKE_INCLUDE_SYSTEM_FLAG_CXX}") + else() + set(test_expect_stdout "-*${CMAKE_INCLUDE_SYSTEM_FLAG_CXX}") + endif() + string(APPEND test_expect_stdout " *(\"[^\"]*|([^ ]|\\ )*)[\\/]dummy_autogen[\\/]include") + if(RunCMake_GENERATOR_IS_MULTI_CONFIG) + string(APPEND test_expect_stdout "_Debug") + endif() + + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/CMP0151-new-build) + run_cmake_with_options(CMP0151-new ${RunCMake_TEST_OPTIONS} -DCMAKE_POLICY_DEFAULT_CMP0151=NEW) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}") + run_cmake_command(CMP0151-new-build ${CMAKE_COMMAND} --build . --config Debug --verbose) + endblock() + + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AutogenUseSystemIncludeOn-build) + run_cmake_with_options(AutogenUseSystemIncludeOn ${RunCMake_TEST_OPTIONS} -DCMAKE_POLICY_DEFAULT_CMP0151=NEW) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}") + run_cmake_command(AutogenUseSystemIncludeOn ${CMAKE_COMMAND} --build . --config Debug --verbose) + endblock() + endif() + + if(CMAKE_INCLUDE_FLAG_CXX) + if(RunCMake_GENERATOR MATCHES "Visual Studio") + string(REGEX REPLACE "^-" "/" test_expect_stdout "${CMAKE_INCLUDE_FLAG_CXX}") + else() + set(test_expect_stdout "-*${CMAKE_INCLUDE_FLAG_CXX}") + endif() + string(APPEND test_expect_stdout " *(\"[^\"]*|([^ ]|\\ )*)[\\/]dummy_autogen[\\/]include") + if(RunCMake_GENERATOR_IS_MULTI_CONFIG) + string(APPEND test_expect_stdout "_Debug") + endif() + + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/CMP0151-old-build) + run_cmake_with_options(CMP0151-old ${RunCMake_TEST_OPTIONS} -DCMAKE_POLICY_DEFAULT_CMP0151=OLD) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}") + run_cmake_command(CMP0151-old-build ${CMAKE_COMMAND} --build . --config Debug --verbose) + endblock() + + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AutogenUseSystemIncludeOff-build) + run_cmake_with_options(AutogenUseSystemIncludeOff ${RunCMake_TEST_OPTIONS} -DCMAKE_POLICY_DEFAULT_CMP0151=NEW) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}") + run_cmake_command(AutogenUseSystemIncludeOff ${CMAKE_COMMAND} --build . --config Debug --verbose) + endblock() + + if(RunCMake_GENERATOR MATCHES "Make|Ninja") + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AutogenSkipLinting-build) + list(APPEND RunCMake_TEST_OPTIONS + "-DPSEUDO_CPPCHECK=${PSEUDO_CPPCHECK}" + "-DPSEUDO_CPPLINT=${PSEUDO_CPPLINT}" + "-DPSEUDO_IWYU=${PSEUDO_IWYU}" + "-DPSEUDO_TIDY=${PSEUDO_TIDY}") + + run_cmake(AutogenSkipLinting) + set(RunCMake_TEST_NO_CLEAN 1) + run_cmake_command(AutogenSkipLinting-build ${CMAKE_COMMAND} --build . --config Debug --verbose) + endblock() + endif() + endif() + + if(RunCMake_GENERATOR_IS_MULTI_CONFIG AND NOT RunCMake_GENERATOR MATCHES "Xcode") + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/MocGeneratedFile-build) + run_cmake(MocGeneratedFile) + set(RunCMake_TEST_NO_CLEAN 1) + run_cmake_command(MocGeneratedFile-build ${CMAKE_COMMAND} --build . --config Debug --verbose) + endblock() + if(RunCMake_GENERATOR MATCHES "Ninja Multi-Config") + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/MocGeneratedFile-cross-config-build) + list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_CROSS_CONFIGS=all) + set(RunCMake_TEST_VARIANT_DESCRIPTION "-CMAKE_CROSS_CONFIGS-all") + run_cmake(MocGeneratedFile) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_TEST_VARIANT_DESCRIPTION "-Release") + run_cmake_command(MocGeneratedFile-cross-config-build ${CMAKE_COMMAND} --build . --config Release --target libgen:Debug) + set(RunCMake_TEST_VARIANT_DESCRIPTION "-Debug") + run_cmake_command(MocGeneratedFile-cross-config-build ${CMAKE_COMMAND} --build . --config Debug --target libgen:Release) + unset(RunCMake_TEST_VARIANT_DESCRIPTION) + endblock() + endif() + endif() +endif () diff --git a/Tests/RunCMake/Autogen_1/SkipLinting.cxx b/Tests/RunCMake/Autogen_1/SkipLinting.cxx new file mode 100644 index 0000000..9e09b27 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/SkipLinting.cxx @@ -0,0 +1,6 @@ +#include "SkipLinting.h" + +int main() +{ + return 0; +} diff --git a/Tests/RunCMake/Autogen_1/SkipLinting.h b/Tests/RunCMake/Autogen_1/SkipLinting.h new file mode 100644 index 0000000..def56a0 --- /dev/null +++ b/Tests/RunCMake/Autogen_1/SkipLinting.h @@ -0,0 +1,11 @@ +#ifndef SKIP_LINTING_H +#define SKIP_LINTING_H + +#include + +class SkipMe : public QObject +{ + Q_OBJECT +}; + +#endif diff --git a/Tests/RunCMake/Autogen_1/empty.cpp b/Tests/RunCMake/Autogen_1/empty.cpp new file mode 100644 index 0000000..e69de29 diff --git a/Tests/RunCMake/Autogen_2/CMakeLists.txt b/Tests/RunCMake/Autogen_2/CMakeLists.txt new file mode 100644 index 0000000..2632ffa --- /dev/null +++ b/Tests/RunCMake/Autogen_2/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.16) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/Autogen_2/MyWindow.cpp b/Tests/RunCMake/Autogen_2/MyWindow.cpp new file mode 100644 index 0000000..d87c2e9 --- /dev/null +++ b/Tests/RunCMake/Autogen_2/MyWindow.cpp @@ -0,0 +1,7 @@ +#include "MyWindow.h" + +MyWindow::MyWindow(QWidget* parent) + : QWidget(parent) +{ + this->m_ui.setupUi(this); +} diff --git a/Tests/RunCMake/Autogen_2/MyWindow.h b/Tests/RunCMake/Autogen_2/MyWindow.h new file mode 100644 index 0000000..c267610 --- /dev/null +++ b/Tests/RunCMake/Autogen_2/MyWindow.h @@ -0,0 +1,16 @@ +#pragma once + +#include + +#include "ui_MyWindow.h" + +class MyWindow : public QWidget +{ + Q_OBJECT + +public: + explicit MyWindow(QWidget* parent = nullptr); + +private: + Ui::MyWindow m_ui; +}; diff --git a/Tests/RunCMake/Autogen_2/MyWindow.ui b/Tests/RunCMake/Autogen_2/MyWindow.ui new file mode 100644 index 0000000..fbf294c --- /dev/null +++ b/Tests/RunCMake/Autogen_2/MyWindow.ui @@ -0,0 +1,5 @@ + + + MyWindow + + diff --git a/Tests/RunCMake/Autogen_2/QtAutoMocDeps-stderr.txt b/Tests/RunCMake/Autogen_2/QtAutoMocDeps-stderr.txt new file mode 100644 index 0000000..6024984 --- /dev/null +++ b/Tests/RunCMake/Autogen_2/QtAutoMocDeps-stderr.txt @@ -0,0 +1,8 @@ +^CMake Deprecation Warning at QtSubDir1/CMakeLists\.txt:[0-9]+ \(cmake_policy\): + The OLD behavior for policy CMP0116 will be removed from a future version + of CMake\. + + The cmake-policies\(7\) manual explains that the OLD behaviors of all + policies are deprecated and that a policy should be set to OLD only under + specific short-term circumstances\. Projects should be ported to the NEW + behavior and not rely on setting a policy to OLD\.$ diff --git a/Tests/RunCMake/Autogen_2/QtAutoMocDeps.cmake b/Tests/RunCMake/Autogen_2/QtAutoMocDeps.cmake new file mode 100644 index 0000000..fc3b2f2 --- /dev/null +++ b/Tests/RunCMake/Autogen_2/QtAutoMocDeps.cmake @@ -0,0 +1,23 @@ +enable_language(CXX) + +find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) + +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 Qt${with_qt_version}::Core) + +if(${with_qt_version}Widgets_DIR) + 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 Qt${with_qt_version}::Widgets) + target_include_directories(app_with_widget PRIVATE "${CMAKE_BINARY_DIR}") +endif() +add_subdirectory(QtSubDir1) +add_subdirectory(QtSubDir2) +add_subdirectory(QtSubDir3) diff --git a/Tests/RunCMake/Autogen_2/QtSubDir1/CMakeLists.txt b/Tests/RunCMake/Autogen_2/QtSubDir1/CMakeLists.txt new file mode 100644 index 0000000..f215b9e --- /dev/null +++ b/Tests/RunCMake/Autogen_2/QtSubDir1/CMakeLists.txt @@ -0,0 +1,4 @@ +cmake_policy(SET CMP0116 OLD) + +add_executable(sub_exe_1 ../app.cpp) +target_link_libraries(sub_exe_1 PRIVATE Qt${with_qt_version}::Core) diff --git a/Tests/RunCMake/Autogen_2/QtSubDir2/CMakeLists.txt b/Tests/RunCMake/Autogen_2/QtSubDir2/CMakeLists.txt new file mode 100644 index 0000000..cccb1e0 --- /dev/null +++ b/Tests/RunCMake/Autogen_2/QtSubDir2/CMakeLists.txt @@ -0,0 +1,4 @@ +cmake_policy(SET CMP0116 NEW) + +add_executable(sub_exe_2 ../app.cpp) +target_link_libraries(sub_exe_2 PRIVATE Qt${with_qt_version}::Core) diff --git a/Tests/RunCMake/Autogen_2/QtSubDir3/CMakeLists.txt b/Tests/RunCMake/Autogen_2/QtSubDir3/CMakeLists.txt new file mode 100644 index 0000000..d268bfe --- /dev/null +++ b/Tests/RunCMake/Autogen_2/QtSubDir3/CMakeLists.txt @@ -0,0 +1,2 @@ +add_executable(sub_exe_3 ../app.cpp) +target_link_libraries(sub_exe_3 PRIVATE Qt${with_qt_version}::Core) diff --git a/Tests/RunCMake/Autogen_2/RunCMakeTest.cmake b/Tests/RunCMake/Autogen_2/RunCMakeTest.cmake new file mode 100644 index 0000000..e97e896 --- /dev/null +++ b/Tests/RunCMake/Autogen_2/RunCMakeTest.cmake @@ -0,0 +1,87 @@ +include(RunCMake) + +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}" + ) + if(RunCMake_GENERATOR MATCHES "Make|Ninja") + block() + if(QtCore_VERSION VERSION_GREATER_EQUAL 5.15.0) + if (RunCMake_GENERATOR MATCHES "Ninja Multi-Config") + set(config_list Debug Release RelWithDebInfo) + set(use_better_graph_list ON OFF) + else() + set(config_list single-config) + set(use_better_graph_list OFF) + endif() + + foreach(use_better_graph IN ITEMS ${use_better_graph_list}) + foreach(config IN ITEMS ${config_list}) + block() + if (config STREQUAL "single-config") + set(config_suffix "") + else() + set(config_path "_${config}") + if (use_better_graph) + set(config_suffix "_${config}") + endif() + endif() + + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/QtAutoMocDeps${config_path}-build) + run_cmake_with_options(QtAutoMocDeps ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=${use_better_graph}) + set(RunCMake_TEST_NO_CLEAN 1) + # Build the project. + if (config STREQUAL "single-config") + set(config_param "") + else() + set(config_param "--config ${config}") + endif() + run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose ${config_param}) + # Touch just the library source file, which shouldn't cause a rerun of AUTOMOC + # for app_with_qt target. + file(TOUCH "${RunCMake_SOURCE_DIR}/simple_lib.cpp") + set(RunCMake_TEST_NOT_EXPECT_stdout "Automatic MOC for target app_with_qt|\ +Automatic MOC for target sub_exe_1|\ +Automatic MOC for target sub_exe_2") + set(RunCMake_TEST_VARIANT_DESCRIPTION "-Don't execute AUTOMOC for 'app_with_qt', 'sub_exe_1' and 'sub_exe_2'") + # Build and assert that AUTOMOC was not run for app_with_qt, sub_exe_1 and sub_exe_2. + run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose ${config_param}) + unset(RunCMake_TEST_VARIANT_DESCRIPTION) + unset(RunCMake_TEST_NOT_EXPECT_stdout) + + macro(check_file_exists file) + if (EXISTS "${file}") + set(check_result "PASSED") + set(message_type "STATUS") + else() + set(check_result "FAILED") + set(message_type "FATAL_ERROR") + endif() + + message(${message_type} "QtAutoMocDeps-build-\"${file}\" was generated - ${check_result}") + endmacro() + + check_file_exists("${RunCMake_TEST_BINARY_DIR}/app_with_qt_autogen/deps${config_suffix}") + check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir1/sub_exe_1_autogen/deps${config_suffix}") + check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir2/sub_exe_2_autogen/deps${config_suffix}") + + check_file_exists("${RunCMake_TEST_BINARY_DIR}/app_with_qt_autogen/timestamp${config_suffix}") + check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir1/sub_exe_1_autogen/timestamp${config_suffix}") + check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir2/sub_exe_2_autogen/timestamp${config_suffix}") + + # Touch a header file to make sure an automoc dependency cycle is not introduced. + file(TOUCH "${RunCMake_SOURCE_DIR}/MyWindow.h") + set(RunCMake_TEST_VARIANT_DESCRIPTION "-First build after touch to detect dependency cycle") + run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose) + # Need to run a second time to hit the dependency cycle. + set(RunCMake_TEST_VARIANT_DESCRIPTION "-Don't hit dependency cycle") + run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose) + endblock() + endforeach() + endforeach() + endif() + endblock() + endif() +endif () diff --git a/Tests/RunCMake/Autogen_2/app.cpp b/Tests/RunCMake/Autogen_2/app.cpp new file mode 100644 index 0000000..57380e4 --- /dev/null +++ b/Tests/RunCMake/Autogen_2/app.cpp @@ -0,0 +1,6 @@ +int main(int argc, char* argv[]) +{ + (void)argc; + (void)argv; + return 0; +} diff --git a/Tests/RunCMake/Autogen_2/app_qt.cpp b/Tests/RunCMake/Autogen_2/app_qt.cpp new file mode 100644 index 0000000..302c672 --- /dev/null +++ b/Tests/RunCMake/Autogen_2/app_qt.cpp @@ -0,0 +1,11 @@ +#include + +class Mango : public QObject +{ + Q_OBJECT +public: +Q_SIGNALS: + void eatFruit(); +}; + +#include "app_qt.moc" diff --git a/Tests/RunCMake/Autogen_2/simple_lib.cpp b/Tests/RunCMake/Autogen_2/simple_lib.cpp new file mode 100644 index 0000000..cf8d689 --- /dev/null +++ b/Tests/RunCMake/Autogen_2/simple_lib.cpp @@ -0,0 +1,6 @@ +#ifdef _WIN32 +__declspec(dllexport) +#endif + void dummy_symbol() +{ +} diff --git a/Tests/RunCMake/Autogen_3/AutoMocExecutableConfig.cmake b/Tests/RunCMake/Autogen_3/AutoMocExecutableConfig.cmake new file mode 100644 index 0000000..fc6ed7f --- /dev/null +++ b/Tests/RunCMake/Autogen_3/AutoMocExecutableConfig.cmake @@ -0,0 +1,15 @@ +include(MocExample.cmake) + +if(NOT TARGET Qt${with_qt_version}::moc) + message(FATAL_ERROR "Qt${with_qt_version}::moc not found") +endif() + +get_target_property(moc_location Qt${with_qt_version}::moc IMPORTED_LOCATION) +set_target_properties(dummy PROPERTIES AUTOMOC_MOC_OPTIONS "EXE_PATH=${moc_location}") + +add_executable(mymoc $<$:../Autogen_common/exe_debug.cpp> + $<$:../Autogen_common/exe_release.cpp> + $<$:../Autogen_common/exe_relwithdebinfo.cpp> +) + +set_target_properties(dummy PROPERTIES AUTOMOC_EXECUTABLE $) diff --git a/Tests/RunCMake/Autogen_3/CMakeLists.txt b/Tests/RunCMake/Autogen_3/CMakeLists.txt new file mode 100644 index 0000000..2632ffa --- /dev/null +++ b/Tests/RunCMake/Autogen_3/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.16) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/Autogen_3/MocExample.cmake b/Tests/RunCMake/Autogen_3/MocExample.cmake new file mode 100644 index 0000000..b4f4729 --- /dev/null +++ b/Tests/RunCMake/Autogen_3/MocExample.cmake @@ -0,0 +1,11 @@ +enable_language(CXX) + +set(CMAKE_CXX_STANDARD 11) +find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) + +add_library(dummy STATIC ../Autogen_common/example.cpp) +target_link_libraries(dummy Qt${with_qt_version}::Core + Qt${with_qt_version}::Widgets + Qt${with_qt_version}::Gui) + +set_target_properties(dummy PROPERTIES AUTOMOC ON) diff --git a/Tests/RunCMake/Autogen_3/RunCMakeTest.cmake b/Tests/RunCMake/Autogen_3/RunCMakeTest.cmake new file mode 100644 index 0000000..a2fb3df --- /dev/null +++ b/Tests/RunCMake/Autogen_3/RunCMakeTest.cmake @@ -0,0 +1,11 @@ +include(RunCMake) +include(Autogen_common/utils) + +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}" + ) + autogen_executable_test(Moc) +endif () diff --git a/Tests/RunCMake/Autogen_4/AutoUicExecutableConfig.cmake b/Tests/RunCMake/Autogen_4/AutoUicExecutableConfig.cmake new file mode 100644 index 0000000..72a0d9f --- /dev/null +++ b/Tests/RunCMake/Autogen_4/AutoUicExecutableConfig.cmake @@ -0,0 +1,15 @@ +include(UicExample.cmake) + +if(NOT TARGET Qt${with_qt_version}::uic) + message(FATAL_ERROR "Qt${with_qt_version}::uic not found") +endif() + +get_target_property(uic_location Qt${with_qt_version}::uic IMPORTED_LOCATION) +set_target_properties(dummy PROPERTIES AUTOUIC_OPTIONS "EXE_PATH=${uic_location}") + +add_executable(myuic $<$:../Autogen_common/exe_debug.cpp> + $<$:../Autogen_common/exe_release.cpp> + $<$:../Autogen_common/exe_relwithdebinfo.cpp> +) + +set_target_properties(dummy PROPERTIES AUTOUIC_EXECUTABLE $) diff --git a/Tests/RunCMake/Autogen_4/CMakeLists.txt b/Tests/RunCMake/Autogen_4/CMakeLists.txt new file mode 100644 index 0000000..2632ffa --- /dev/null +++ b/Tests/RunCMake/Autogen_4/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.16) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/Autogen_4/RunCMakeTest.cmake b/Tests/RunCMake/Autogen_4/RunCMakeTest.cmake new file mode 100644 index 0000000..ac8c5d4 --- /dev/null +++ b/Tests/RunCMake/Autogen_4/RunCMakeTest.cmake @@ -0,0 +1,11 @@ +include(RunCMake) +include(Autogen_common/utils) + +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}" + ) + autogen_executable_test(Uic) +endif () diff --git a/Tests/RunCMake/Autogen_4/UicExample.cmake b/Tests/RunCMake/Autogen_4/UicExample.cmake new file mode 100644 index 0000000..4b1f8c1 --- /dev/null +++ b/Tests/RunCMake/Autogen_4/UicExample.cmake @@ -0,0 +1,11 @@ +enable_language(CXX) + +set(CMAKE_CXX_STANDARD 11) +find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) + +add_library(dummy STATIC example_ui.cpp uiA.ui) +target_link_libraries(dummy Qt${with_qt_version}::Core + Qt${with_qt_version}::Widgets + Qt${with_qt_version}::Gui) + +set_target_properties(dummy PROPERTIES AUTOUIC ON) diff --git a/Tests/RunCMake/Autogen_4/example_ui.cpp b/Tests/RunCMake/Autogen_4/example_ui.cpp new file mode 100644 index 0000000..fb97c32 --- /dev/null +++ b/Tests/RunCMake/Autogen_4/example_ui.cpp @@ -0,0 +1,5 @@ +#include "example_ui.h" + +Example::Example() +{ +} diff --git a/Tests/RunCMake/Autogen_4/example_ui.h b/Tests/RunCMake/Autogen_4/example_ui.h new file mode 100644 index 0000000..d691133 --- /dev/null +++ b/Tests/RunCMake/Autogen_4/example_ui.h @@ -0,0 +1,14 @@ +#ifndef EXAMPLE_UI_H +#define EXAMPLE_UI_H + +#include + +#include "ui_uiA.h" + +class Example : public QObject +{ + Q_OBJECT + Example(); +}; + +#endif diff --git a/Tests/RunCMake/Autogen_4/uiA.ui b/Tests/RunCMake/Autogen_4/uiA.ui new file mode 100644 index 0000000..4c5762e --- /dev/null +++ b/Tests/RunCMake/Autogen_4/uiA.ui @@ -0,0 +1,24 @@ + + + UiA + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + + + + + diff --git a/Tests/RunCMake/Autogen_5/AutoRccExecutableConfig.cmake b/Tests/RunCMake/Autogen_5/AutoRccExecutableConfig.cmake new file mode 100644 index 0000000..b15dd72 --- /dev/null +++ b/Tests/RunCMake/Autogen_5/AutoRccExecutableConfig.cmake @@ -0,0 +1,15 @@ +include(RccExample.cmake) + +if(NOT TARGET Qt${with_qt_version}::rcc) + message(FATAL_ERROR "Qt${with_qt_version}::rcc not found") +endif() + +get_target_property(rcc_location Qt${with_qt_version}::rcc IMPORTED_LOCATION) +set_target_properties(dummy PROPERTIES AUTORCC_OPTIONS "EXE_PATH=${rcc_location}") + +add_executable(myrcc $<$:../Autogen_common/exe_debug.cpp> + $<$:../Autogen_common/exe_release.cpp> + $<$:../Autogen_common/exe_relwithdebinfo.cpp> +) + +set_target_properties(dummy PROPERTIES AUTORCC_EXECUTABLE $) diff --git a/Tests/RunCMake/Autogen_5/CMakeLists.txt b/Tests/RunCMake/Autogen_5/CMakeLists.txt new file mode 100644 index 0000000..2632ffa --- /dev/null +++ b/Tests/RunCMake/Autogen_5/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.16) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/Autogen_5/RccExample.cmake b/Tests/RunCMake/Autogen_5/RccExample.cmake new file mode 100644 index 0000000..9f8dc59 --- /dev/null +++ b/Tests/RunCMake/Autogen_5/RccExample.cmake @@ -0,0 +1,15 @@ +enable_language(CXX) + +set(CMAKE_CXX_STANDARD 11) +find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui) + +add_library(dummy STATIC ../Autogen_common/example.cpp data.qrc) +target_link_libraries(dummy Qt${with_qt_version}::Core + Qt${with_qt_version}::Widgets + Qt${with_qt_version}::Gui) + +set_target_properties(dummy PROPERTIES AUTORCC ON) + +if(DEFINED ZSTD_VALUE) + set(QT_FEATURE_zstd ${ZSTD_VALUE}) +endif() diff --git a/Tests/RunCMake/Autogen_5/RunCMakeTest.cmake b/Tests/RunCMake/Autogen_5/RunCMakeTest.cmake new file mode 100644 index 0000000..8060ec4 --- /dev/null +++ b/Tests/RunCMake/Autogen_5/RunCMakeTest.cmake @@ -0,0 +1,31 @@ +include(RunCMake) +include(Autogen_common/utils) + +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}" + ) + autogen_executable_test(Rcc) + if (QtCore_VERSION VERSION_GREATER_EQUAL 6) + if (RunCMake_GENERATOR MATCHES "Make|Ninja") + foreach(value IN ITEMS ON OFF) + block() + set(RunCMake_TEST_BINARY_DIR + ${RunCMake_BINARY_DIR}/RccNoZTSD-${value}-build) + run_cmake_with_options(RccExample ${RunCMake_TEST_OPTIONS} + -DCMAKE_AUTOGEN_VERBOSE=ON -DZSTD_VALUE=${value}) + if (value STREQUAL "OFF") + set(RunCMake_TEST_EXPECT_stdout "--no-zstd") + else() + set(RunCMake_TEST_NOT_EXPECT_stdout "--no-zstd") + endif() + set(RunCMake_TEST_NO_CLEAN 1) + run_cmake_command(RccNoZTSD-${value}-build ${CMAKE_COMMAND} + --build . --config Debug) + endblock() + endforeach() + endif() + endif() +endif () diff --git a/Tests/RunCMake/Autogen_5/data.qrc b/Tests/RunCMake/Autogen_5/data.qrc new file mode 100644 index 0000000..9bd068c --- /dev/null +++ b/Tests/RunCMake/Autogen_5/data.qrc @@ -0,0 +1,4 @@ + + + + diff --git a/Tests/RunCMake/Autogen_common/example.cpp b/Tests/RunCMake/Autogen_common/example.cpp new file mode 100644 index 0000000..7f1a781 --- /dev/null +++ b/Tests/RunCMake/Autogen_common/example.cpp @@ -0,0 +1,5 @@ +#include "example.h" + +Example::Example() +{ +} diff --git a/Tests/RunCMake/Autogen_common/example.h b/Tests/RunCMake/Autogen_common/example.h new file mode 100644 index 0000000..e8bfa42 --- /dev/null +++ b/Tests/RunCMake/Autogen_common/example.h @@ -0,0 +1,12 @@ +#ifndef EXAMPLE_H +#define EXAMPLE_H + +#include + +class Example : public QObject +{ + Q_OBJECT + Example(); +}; + +#endif diff --git a/Tests/RunCMake/Autogen_common/exe_common.h b/Tests/RunCMake/Autogen_common/exe_common.h new file mode 100644 index 0000000..15311c6 --- /dev/null +++ b/Tests/RunCMake/Autogen_common/exe_common.h @@ -0,0 +1,48 @@ +#ifndef EXE_COMMON_H +#define EXE_COMMON_H + +#include +#include +#include +#include + +inline int runRealExe(const int argc, char** argv) +{ + std::vector args; + std::string realMocPath; + std::string const pathArg = "EXE_PATH="; + std::string cmd; + if (argc > 1) { + for (int i = 1; i < argc; ++i) { + std::string const arg = argv[i]; + if (arg.find(pathArg) != std::string::npos) { + realMocPath = arg.substr(pathArg.length()); + // if EXE_PATH contains spaces, wrap it in quotes + if (realMocPath.find(" ") != std::string::npos) { + realMocPath = "\"" + realMocPath + "\""; + } + } else { + args.push_back(arg); + } + } + } +#ifdef _WIN32 + cmd += "cmd /C \""; +#endif + cmd += realMocPath + " "; + for (auto arg : args) { + // if arg contains spaces, wrap it in quotes + if (arg.find(' ') != std::string::npos) { + cmd += " \"" + arg + "\""; + } else { + cmd += " " + arg; + } + } +#ifdef _WIN32 + cmd += "\""; +#endif + std::cout << "Running real exe:" << cmd << std::endl; + return std::system(cmd.c_str()); +} + +#endif diff --git a/Tests/RunCMake/Autogen_common/exe_debug.cpp b/Tests/RunCMake/Autogen_common/exe_debug.cpp new file mode 100644 index 0000000..ae5185b --- /dev/null +++ b/Tests/RunCMake/Autogen_common/exe_debug.cpp @@ -0,0 +1,10 @@ +#include +#include + +#include "exe_common.h" + +int main(int argc, char* argv[]) +{ + std::cout << "running_exe_Debug\n"; + return runRealExe(argc, argv); +} diff --git a/Tests/RunCMake/Autogen_common/exe_release.cpp b/Tests/RunCMake/Autogen_common/exe_release.cpp new file mode 100644 index 0000000..384c992 --- /dev/null +++ b/Tests/RunCMake/Autogen_common/exe_release.cpp @@ -0,0 +1,10 @@ +#include +#include + +#include "exe_common.h" + +int main(int argc, char* argv[]) +{ + std::cout << "running_exe_Release\n"; + return runRealExe(argc, argv); +} diff --git a/Tests/RunCMake/Autogen_common/exe_relwithdebinfo.cpp b/Tests/RunCMake/Autogen_common/exe_relwithdebinfo.cpp new file mode 100644 index 0000000..aa6c558 --- /dev/null +++ b/Tests/RunCMake/Autogen_common/exe_relwithdebinfo.cpp @@ -0,0 +1,10 @@ +#include +#include + +#include "exe_common.h" + +int main(int argc, char* argv[]) +{ + std::cout << "running_exe_RelWithDebInfo\n"; + return runRealExe(argc, argv); +} diff --git a/Tests/RunCMake/Autogen_common/utils.cmake b/Tests/RunCMake/Autogen_common/utils.cmake new file mode 100644 index 0000000..86efa85 --- /dev/null +++ b/Tests/RunCMake/Autogen_common/utils.cmake @@ -0,0 +1,259 @@ +function(run_make_program dir) + execute_process( + COMMAND "${RunCMake_MAKE_PROGRAM}" ${ARGN} + WORKING_DIRECTORY "${dir}" + OUTPUT_VARIABLE make_program_stdout + ERROR_VARIABLE make_program_stderr + RESULT_VARIABLE make_program_result + ) + if (NOT DEFINED RunMakeProgram_expected_result) + set(RunMakeProgram_expected_result 0) + endif() + if(NOT "${make_program_result}" MATCHES "${RunMakeProgram_expected_result}") + message(STATUS " +============ beginning of ${RunCMake_MAKE_PROGRAM}'s stdout ============ +${make_program_stdout} +=============== end of ${RunCMake_MAKE_PROGRAM}'s stdout =============== +") + message(STATUS " +============ beginning of ${RunCMake_MAKE_PROGRAM}'s stderr ============ +${make_program_stderr} +=============== end of ${RunCMake_MAKE_PROGRAM}'s stderr =============== +") + message(FATAL_ERROR + "top ${RunCMake_MAKE_PROGRAM} build failed exited with status ${make_program_result}") + endif() + set(make_program_stdout "${make_program_stdout}" PARENT_SCOPE) +endfunction(run_make_program) + +function(count_substring STRING SUBSTRING COUNT_VAR) + string(LENGTH "${STRING}" STRING_LENGTH) + string(LENGTH "${SUBSTRING}" SUBSTRING_LENGTH) + if (SUBSTRING_LENGTH EQUAL 0) + message(FATAL_ERROR "SUBSTRING_LENGTH is 0") + endif() + + if (STRING_LENGTH EQUAL 0) + message(FATAL_ERROR "STRING_LENGTH is 0") + endif() + + if (STRING_LENGTH LESS SUBSTRING_LENGTH) + message(FATAL_ERROR "STRING_LENGTH is less than SUBSTRING_LENGTH") + endif() + + set(COUNT 0) + string(FIND "${STRING}" "${SUBSTRING}" SUBSTRING_START) + while(SUBSTRING_START GREATER_EQUAL 0) + math(EXPR COUNT "${COUNT} + 1") + math(EXPR SUBSTRING_START "${SUBSTRING_START} + ${SUBSTRING_LENGTH}") + string(SUBSTRING "${STRING}" ${SUBSTRING_START} -1 STRING) + string(FIND "${STRING}" "${SUBSTRING}" SUBSTRING_START) + endwhile() + + set(${COUNT_VAR} ${COUNT} PARENT_SCOPE) +endfunction() + +function(not_expect make_program_stdout unexpected_output test_name) + count_substring("${make_program_stdout}" "${unexpected_output}" count) + if(NOT count EQUAL 0) + message(STATUS "${test_name}-not_expect - FAILED") + message(FATAL_ERROR "Expected to find ${unexpected_output} exactly 0 times in ${make_program_stdout} but found ${count} occurrences of ${unexpected_output}") + else() + message(STATUS "${test_name}-not_expect - PASSED") + endif() +endfunction() + +function(expect_only_once make_program_stdout expected_output test_name) + count_substring("${make_program_stdout}" "${expected_output}" count) + if(NOT count EQUAL 1) + message(STATUS "${test_name}-expect_only_once - FAILED") + message(FATAL_ERROR "Expected to find ${expected_output} exactly once in ${make_program_stdout} but found ${count} occurrences of ${expected_output}") + else() + message(STATUS "${test_name}-expect_only_once - PASSED") + endif() +endfunction() + +function(expect_n_times string_to_check expected_output expected_count test_name) + count_substring("${string_to_check}" "${expected_output}" count) + if(NOT count EQUAL ${expected_count}) + message(STATUS "${test_name}-expect_${expected_count}_times - FAILED") + message(FATAL_ERROR "Expected to find ${expected_output} exactly ${expected_count} times in ${string_to_check} but found ${count} occurrences of ${expected_output}") + else() + message(STATUS "${test_name}-expect_${expected_count}_times - PASSED") + endif() +endfunction() + +function(autogen_executable_test exe) + if (QtCore_VERSION VERSION_GREATER_EQUAL 5.15.0) + if(RunCMake_GENERATOR MATCHES "Ninja Multi-Config") + block() + set(RunCMake_TEST_VARIANT_DESCRIPTION "-CMake-configure") + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig-multi-config-build) + run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON -DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=ON) + unset(RunCMake_TEST_VARIANT_DESCRIPTION) + set(RunCMake_TEST_NO_CLEAN 1) + foreach(config IN ITEMS Debug Release RelWithDebInfo) + block() + set(RunCMake_TEST_EXPECT_stdout ".*running_exe_${config}*") + set(RunCMake_TEST_VARIANT_DESCRIPTION "-${config}-expect_running_exe_${config}") + run_cmake_command(Auto${exe}ExecutableConfig-multi-config-build ${CMAKE_COMMAND} --build . --config ${config}) + endblock() + endforeach() + set(RunCMake_TEST_EXPECT_stdout "ninja: no work to do") + foreach(config IN ITEMS Debug Release RelWithDebInfo) + block() + set(RunCMake_TEST_VARIANT_DESCRIPTION "-${config}-expect_no_work_to_do") + run_cmake_command(Auto${exe}ExecutableConfig-multi-config-build ${CMAKE_COMMAND} --build . --config ${config}) + endblock() + endforeach() + endblock() + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig-build) + run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON -DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=ON) + foreach(config IN ITEMS Debug Release RelWithDebInfo) + block() + run_make_program(${RunCMake_TEST_BINARY_DIR} --verbose -f build-${config}.ninja) + + set(expected_output "running_exe_${config}") + expect_only_once("${make_program_stdout}" "${expected_output}" "Auto${exe}ExecutableConfig-${config}-${expected_output}") + + foreach(sub_config IN ITEMS Debug Release RelWithDebInfo) + if(NOT sub_config STREQUAL config) + set(unexpected_output "running_exe_${sub_config}") + not_expect("${make_program_stdout}" "${unexpected_output}" "Auto${exe}ExecutableConfig-${config}-${unexpected_output}") + endif() + endforeach() + + if (exe STREQUAL "Moc" OR exe STREQUAL "Uic") + set(expected_output "cmake_autogen") + else() + set(expected_output "cmake_autorcc") + endif() + expect_only_once("${make_program_stdout}" "${expected_output}" "Auto${exe}ExecutableConfig-${config}-${expected_output}") + endblock() + endforeach() + endblock() + block() + foreach(ninja_config IN ITEMS Debug Release RelWithDebInfo) + foreach(target_config IN ITEMS Debug Release RelWithDebInfo) + block() + set(TEST_SUFFIX "-CrossConfig-${ninja_config}-${target_config}") + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig${TEST_SUFFIX}-build) + set(RunCMake_TEST_VARIANT_DESCRIPTION ${TEST_SUFFIX}) + run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_CROSS_CONFIGS=all -DCMAKE_DEFAULT_BUILD_TYPE=${ninja_config} -DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=ON) + unset(RunCMake_TEST_VARIANT_DESCRIPTION) + + run_make_program(${RunCMake_TEST_BINARY_DIR} --verbose -f build-${ninja_config}.ninja dummy:${target_config}) + + set(expected_output "running_exe_${ninja_config}") + expect_only_once("${make_program_stdout}" "${expected_output}" "Auto${exe}ExecutableConfig${TEST_SUFFIX}-${expected_output}") + + foreach(sub_config IN ITEMS Debug Release RelWithDebInfo) + if(NOT sub_config STREQUAL ninja_config) + set(unexpected_output "running_exe_${sub_config}") + not_expect("${make_program_stdout}" "${unexpected_output}" "Auto${exe}ExecutableConfig${TEST_SUFFIX}-${unexpected_output}") + endif() + endforeach() + + if (exe STREQUAL "Moc" OR exe STREQUAL "Uic") + set(expected_output "cmake_autogen") + else() + set(expected_output "cmake_autorcc") + endif() + expect_only_once("${make_program_stdout}" "${expected_output}" "Auto${exe}ExecutableConfig${TEST_SUFFIX}-${expected_output}") + endblock() + endforeach() + endforeach() + endblock() + block() + foreach(ninja_config IN ITEMS Debug Release RelWithDebInfo) + set(TEST_SUFFIX "-CrossConfig-${ninja_config}-all-all") + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig${TEST_SUFFIX}-build) + set(RunCMake_TEST_VARIANT_DESCRIPTION ${TEST_SUFFIX}) + run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_CROSS_CONFIGS=all -DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=ON) + unset(RunCMake_TEST_VARIANT_DESCRIPTION) + run_make_program(${RunCMake_TEST_BINARY_DIR} --verbose -f build-${ninja_config}.ninja all:all) + endforeach() + endblock() + elseif (RunCMake_GENERATOR MATCHES "Ninja|Make") + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig-build) + foreach(config IN ITEMS Debug Release RelWithDebInfo) + block() + set(RunCMake_TEST_VARIANT_DESCRIPTION "-${config}") + run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_BUILD_TYPE=${config} -DCMAKE_AUTOGEN_VERBOSE=ON) + unset(RunCMake_TEST_VARIANT_DESCRIPTION) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_TEST_EXPECT_stdout ".*running_exe_${config}*") + run_cmake_command(Auto${exe}ExecutableConfig-${config}-build ${CMAKE_COMMAND} --build .) + endblock() + endforeach() + endblock() + endif() + endif() + + # Visual Studio specific dependency tests + if (RunCMake_GENERATOR MATCHES "Visual Studio") + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${exe}Example-build) + set(RunCMake_TEST_VARIANT_DESCRIPTION "-CMake-configure") + run_cmake_with_options(${exe}Example ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON) + unset(RunCMake_TEST_VARIANT_DESCRIPTION) + set(RunCMake_TEST_NO_CLEAN 1) + foreach(config IN ITEMS Debug Release RelWithDebInfo) + block() + set(RunCMake_TEST_VARIANT_DESCRIPTION "-${config}-first-build") + run_cmake_command(${exe}Example-build ${CMAKE_COMMAND} --build . --config ${config}) + endblock() + endforeach() + foreach(config IN ITEMS Debug Release RelWithDebInfo) + block() + if (exe STREQUAL "Moc" OR exe STREQUAL "Uic") + set(RunCMake_TEST_NOT_EXPECT_stdout "Auto${exe}") + set(not_expect_descripton "Auto${exe}") + else () + set(RunCMake_TEST_NOT_EXPECT_stdout "Auto${exe}") + set(not_expect_descripton "Auto${exe}") + endif() + set(RunCMake_TEST_VARIANT_DESCRIPTION "-second-build-${config}_expect_no_${not_expect_descripton}") + run_cmake_command(${exe}Example-build ${CMAKE_COMMAND} --build . --config ${config}) + endblock() + endforeach() + endblock() + endif() + + if (RunCMake_GENERATOR MATCHES "Xcode") + foreach(exe IN ITEMS Moc Uic Rcc) + block() + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${exe}Example-build) + set(RunCMake_TEST_VARIANT_DESCRIPTION "-CMake-configure") + set(RunCMake_TEST_EXPECT_stderr ".*") + run_cmake_with_options(${exe}Example ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_MAKE_PROGRAM ${CMAKE_COMMAND}) + run_make_program(${RunCMake_TEST_BINARY_DIR} --build . --config Debug) + if (exe STREQUAL "Moc") + set(expected_count 16) + elseif (exe STREQUAL "Uic") + set(expected_count 4) + else() + set(expected_count 12) + endif() + expect_n_times("${make_program_stdout}" "Auto${exe}:" ${expected_count} "${exe}Example-build-Auto${exe}") + expect_n_times("${make_program_stdout}" "Auto${exe}:" ${expected_count} "${exe}Example-build-Auto${exe}") + + if (exe STREQUAL "Moc" OR exe STREQUAL "Uic") + expect_n_times("${make_program_stdout}" "AutoGen:" 20 "${exe}Example-build-AutoGen:") + endif() + + foreach(config IN ITEMS Debug Release RelWithDebInfo) + block() + run_make_program(${RunCMake_TEST_BINARY_DIR} --build . --config ${config}) + not_expect("${make_program_stdout}" "Auto${exe}" "${exe}Example-${config}_Auto${exe}") + not_expect("${make_program_stdout}" "AutoGen:" "${exe}Example-${config}_AutoGen") + endblock() + endforeach() + endblock() + endforeach() + endif() +endfunction() diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 213c18d..4d39fa2 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -288,28 +288,35 @@ if(CMake_TEST_Qt6 AND Qt6Widgets_FOUND) cmake_path(GET Qt6_DIR PARENT_PATH base_dir) # /lib/cmake cmake_path(GET base_dir PARENT_PATH base_dir) # /lib cmake_path(GET base_dir PARENT_PATH base_dir) # - add_RunCMake_test(AutogenQt6 TEST_DIR Autogen - -Dwith_qt_version=6 - -DQtCore_VERSION=${Qt6Core_VERSION} - "-DQt6_DIR:PATH=${Qt6_DIR}" - "-DCMAKE_PREFIX_PATH:STRING=${base_dir}" - -DPSEUDO_TIDY=$ - -DPSEUDO_IWYU=$ - -DPSEUDO_CPPLINT=$ - -DPSEUDO_CPPCHECK=$ - ) + # Note: Since RunCMake.Autogen tests cause time out on some CI, + # we split the tests. + set(autogen_test_number 1 2 3 4 5) + foreach(val IN ITEMS ${autogen_test_number}) + add_RunCMake_test("Autogen_Qt6_${val}" TEST_DIR "Autogen_${val}" + -Dwith_qt_version=6 + -DQtCore_VERSION=${Qt6Core_VERSION} + "-DQt6_DIR:PATH=${Qt6_DIR}" + "-DCMAKE_PREFIX_PATH:STRING=${base_dir}" + -DPSEUDO_TIDY=$ + -DPSEUDO_IWYU=$ + -DPSEUDO_CPPLINT=$ + -DPSEUDO_CPPCHECK=$ + ) + endforeach() set(want_NoQt_test FALSE) endif () if(CMake_TEST_Qt5 AND Qt5Widgets_FOUND) - add_RunCMake_test(AutogenQt5 TEST_DIR Autogen - -Dwith_qt_version=5 - -DQtCore_VERSION=${Qt5Core_VERSION} - "-DQt5_DIR:PATH=${Qt5_DIR}" - ) + foreach(val IN ITEMS ${autogen_test_number}) + add_RunCMake_test("Autogen_Qt5_${val}" TEST_DIR "Autogen_${val}" + -Dwith_qt_version=5 + -DQtCore_VERSION=${Qt5Core_VERSION} + "-DQt5_DIR:PATH=${Qt5_DIR}" + ) + endforeach() set(want_NoQt_test FALSE) endif () if(want_NoQt_test) - add_RunCMake_test(AutogenNoQt TEST_DIR Autogen) + add_RunCMake_test(AutogenNoQt TEST_DIR Autogen_1) endif() if(NOT DEFINED CMake_TEST_BuildDepends_GNU_AS -- cgit v0.12