From 59dbd3f891ed79d56df468235c47be3538be734d Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Fri, 25 Nov 2016 12:28:02 +0100 Subject: [PATCH 1/7] QtAutogen tests: Rename rcconly target to camel case rccOnly. Also add dedicated rccOnlyRes.qrc file for the rccOnly target. --- Tests/QtAutogen/CMakeLists.txt | 8 ++++---- Tests/QtAutogen/{rcconly.cpp => rccOnly.cpp} | 4 ++-- Tests/QtAutogen/rccOnlyRes.qrc | 5 +++++ 3 files changed, 11 insertions(+), 6 deletions(-) rename Tests/QtAutogen/{rcconly.cpp => rccOnly.cpp} (52%) create mode 100644 Tests/QtAutogen/rccOnlyRes.qrc diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt index c713d1c964..44c8a33af1 100644 --- a/Tests/QtAutogen/CMakeLists.txt +++ b/Tests/QtAutogen/CMakeLists.txt @@ -44,10 +44,10 @@ else() endif() -# -- RCC only -add_executable(rcconly rcconly.cpp second_resource.qrc) -set_property(TARGET rcconly PROPERTY AUTORCC ON) -target_link_libraries(rcconly ${QT_QTCORE_TARGET}) +# -- Test: RCC only +add_executable(rccOnly rccOnly.cpp rccOnlyRes.qrc) +set_property(TARGET rccOnly PROPERTY AUTORCC ON) +target_link_libraries(rccOnly ${QT_QTCORE_TARGET}) # -- RCC empty add_executable(rcc_empty rcc_empty.cpp rcc_empty_resource.qrc) diff --git a/Tests/QtAutogen/rcconly.cpp b/Tests/QtAutogen/rccOnly.cpp similarity index 52% rename from Tests/QtAutogen/rcconly.cpp rename to Tests/QtAutogen/rccOnly.cpp index 854c4c1bc0..61c7bf4ed6 100644 --- a/Tests/QtAutogen/rcconly.cpp +++ b/Tests/QtAutogen/rccOnly.cpp @@ -1,9 +1,9 @@ -extern int qInitResources_second_resource(); +extern int qInitResources_rccOnlyRes(); int main(int, char**) { // Fails to link if the symbol is not present. - qInitResources_second_resource(); + qInitResources_rccOnlyRes(); return 0; } diff --git a/Tests/QtAutogen/rccOnlyRes.qrc b/Tests/QtAutogen/rccOnlyRes.qrc new file mode 100644 index 0000000000..5551348777 --- /dev/null +++ b/Tests/QtAutogen/rccOnlyRes.qrc @@ -0,0 +1,5 @@ + + + rccOnly.cpp + + From cb4bc19ae1b2f61165543ef926037936b179414d Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Fri, 25 Nov 2016 12:41:16 +0100 Subject: [PATCH 2/7] QtAutogen tests: Rename rcc_empty target to camel case rccEmpty --- Tests/QtAutogen/CMakeLists.txt | 9 ++++----- Tests/QtAutogen/{rcc_empty.cpp => rccEmpty.cpp} | 4 ++-- .../{rcc_empty_resource.qrc => rccEmptyRes.qrc} | 0 3 files changed, 6 insertions(+), 7 deletions(-) rename Tests/QtAutogen/{rcc_empty.cpp => rccEmpty.cpp} (50%) rename Tests/QtAutogen/{rcc_empty_resource.qrc => rccEmptyRes.qrc} (100%) diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt index 44c8a33af1..b0bc10089a 100644 --- a/Tests/QtAutogen/CMakeLists.txt +++ b/Tests/QtAutogen/CMakeLists.txt @@ -49,13 +49,12 @@ add_executable(rccOnly rccOnly.cpp rccOnlyRes.qrc) set_property(TARGET rccOnly PROPERTY AUTORCC ON) target_link_libraries(rccOnly ${QT_QTCORE_TARGET}) -# -- RCC empty -add_executable(rcc_empty rcc_empty.cpp rcc_empty_resource.qrc) -set_property(TARGET rcc_empty PROPERTY AUTORCC ON) -target_link_libraries(rcc_empty ${QT_QTCORE_TARGET}) +# -- Test: RCC empty +add_executable(rccEmpty rccEmpty.cpp rccEmptyRes.qrc) +set_property(TARGET rccEmpty PROPERTY AUTORCC ON) +target_link_libraries(rccEmpty ${QT_QTCORE_TARGET}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) - add_definitions(-DFOO -DSomeDefine="Barx") # enable relaxed mode so automoc can handle all the special cases: diff --git a/Tests/QtAutogen/rcc_empty.cpp b/Tests/QtAutogen/rccEmpty.cpp similarity index 50% rename from Tests/QtAutogen/rcc_empty.cpp rename to Tests/QtAutogen/rccEmpty.cpp index 3f9f9a28d7..7f2c527863 100644 --- a/Tests/QtAutogen/rcc_empty.cpp +++ b/Tests/QtAutogen/rccEmpty.cpp @@ -1,9 +1,9 @@ -extern int qInitResources_rcc_empty_resource(); +extern int qInitResources_rccEmptyRes(); int main(int, char**) { // Fails to link if the symbol is not present. - qInitResources_rcc_empty_resource(); + qInitResources_rccEmptyRes(); return 0; } diff --git a/Tests/QtAutogen/rcc_empty_resource.qrc b/Tests/QtAutogen/rccEmptyRes.qrc similarity index 100% rename from Tests/QtAutogen/rcc_empty_resource.qrc rename to Tests/QtAutogen/rccEmptyRes.qrc From d675004dbac12a938cf60fac39e5b9b81bbb6a99 Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Fri, 25 Nov 2016 13:19:32 +0100 Subject: [PATCH 3/7] QtAutogen tests: Rename uiconly target to camel case uicOnly Also move uicOnly sources to dedicated uicOnlySource directory. --- Tests/QtAutogen/CMakeLists.txt | 10 ++++++---- Tests/QtAutogen/{sub => uicOnlySource}/uiconly.cpp | 0 Tests/QtAutogen/{sub => uicOnlySource}/uiconly.h | 0 Tests/QtAutogen/{sub => uicOnlySource}/uiconly.ui | 0 4 files changed, 6 insertions(+), 4 deletions(-) rename Tests/QtAutogen/{sub => uicOnlySource}/uiconly.cpp (100%) rename Tests/QtAutogen/{sub => uicOnlySource}/uiconly.h (100%) rename Tests/QtAutogen/{sub => uicOnlySource}/uiconly.ui (100%) diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt index b0bc10089a..6a5d7b501e 100644 --- a/Tests/QtAutogen/CMakeLists.txt +++ b/Tests/QtAutogen/CMakeLists.txt @@ -54,6 +54,12 @@ add_executable(rccEmpty rccEmpty.cpp rccEmptyRes.qrc) set_property(TARGET rccEmpty PROPERTY AUTORCC ON) target_link_libraries(rccEmpty ${QT_QTCORE_TARGET}) +# -- Test: UIC only +qtx_wrap_cpp(uicOnlyMoc uicOnlySource/uiconly.h) +add_executable(uicOnly uicOnlySource/uiconly.cpp ${uicOnlyMoc}) +set_property(TARGET uicOnly PROPERTY AUTOUIC ON) +target_link_libraries(uicOnly ${QT_LIBRARIES}) + include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_definitions(-DFOO -DSomeDefine="Barx") @@ -147,10 +153,6 @@ target_link_libraries(empty no_link_language) add_library(no_link_language STATIC empty.h) set_target_properties(no_link_language PROPERTIES AUTOMOC TRUE) -qtx_wrap_cpp(uicOnlyMoc sub/uiconly.h) -add_executable(uiconly sub/uiconly.cpp ${uicOnlyMoc}) -target_link_libraries(uiconly ${QT_LIBRARIES}) - try_compile(RCC_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/autorcc_depends" "${CMAKE_CURRENT_SOURCE_DIR}/autorcc_depends" diff --git a/Tests/QtAutogen/sub/uiconly.cpp b/Tests/QtAutogen/uicOnlySource/uiconly.cpp similarity index 100% rename from Tests/QtAutogen/sub/uiconly.cpp rename to Tests/QtAutogen/uicOnlySource/uiconly.cpp diff --git a/Tests/QtAutogen/sub/uiconly.h b/Tests/QtAutogen/uicOnlySource/uiconly.h similarity index 100% rename from Tests/QtAutogen/sub/uiconly.h rename to Tests/QtAutogen/uicOnlySource/uiconly.h diff --git a/Tests/QtAutogen/sub/uiconly.ui b/Tests/QtAutogen/uicOnlySource/uiconly.ui similarity index 100% rename from Tests/QtAutogen/sub/uiconly.ui rename to Tests/QtAutogen/uicOnlySource/uiconly.ui From 7052af9d4a4e71f52e98a24969c38e8eb86f317b Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Fri, 25 Nov 2016 13:39:12 +0100 Subject: [PATCH 4/7] QtAutogen tests: Move independent sameName test to top list of CMakeLists.txt --- Tests/QtAutogen/CMakeLists.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt index 6a5d7b501e..a499acc819 100644 --- a/Tests/QtAutogen/CMakeLists.txt +++ b/Tests/QtAutogen/CMakeLists.txt @@ -60,6 +60,10 @@ add_executable(uicOnly uicOnlySource/uiconly.cpp ${uicOnlyMoc}) set_property(TARGET uicOnly PROPERTY AUTOUIC ON) target_link_libraries(uicOnly ${QT_LIBRARIES}) +# -- Test: AUTOMOC and AUTORCC on source files with the same name +# but in different subdirectories +add_subdirectory(sameName) + include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_definitions(-DFOO -DSomeDefine="Barx") @@ -121,9 +125,6 @@ set_target_properties( AUTOMOC TRUE ) -# Test AUTOMOC and AUTORCC on source files with the same name -# but in different subdirectories -add_subdirectory(sameName) include(GenerateExportHeader) # The order is relevant here. B depends on A, and B headers depend on A From 2599f5d64b6d81967de9ba6f11420ec7815f618d Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Fri, 25 Nov 2016 14:19:55 +0100 Subject: [PATCH 5/7] QtAutogen tests: Extend test description in CMakeLists.txt --- Tests/QtAutogen/CMakeLists.txt | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt index a499acc819..d09b24db36 100644 --- a/Tests/QtAutogen/CMakeLists.txt +++ b/Tests/QtAutogen/CMakeLists.txt @@ -44,26 +44,30 @@ else() endif() -# -- Test: RCC only +# -- Test: AUTORCC +# RCC only add_executable(rccOnly rccOnly.cpp rccOnlyRes.qrc) set_property(TARGET rccOnly PROPERTY AUTORCC ON) target_link_libraries(rccOnly ${QT_QTCORE_TARGET}) -# -- Test: RCC empty +# -- Test: AUTORCC +# RCC empty add_executable(rccEmpty rccEmpty.cpp rccEmptyRes.qrc) set_property(TARGET rccEmpty PROPERTY AUTORCC ON) target_link_libraries(rccEmpty ${QT_QTCORE_TARGET}) -# -- Test: UIC only +# -- Test: AUTOUIC +# UIC only qtx_wrap_cpp(uicOnlyMoc uicOnlySource/uiconly.h) add_executable(uicOnly uicOnlySource/uiconly.cpp ${uicOnlyMoc}) set_property(TARGET uicOnly PROPERTY AUTOUIC ON) target_link_libraries(uicOnly ${QT_LIBRARIES}) -# -- Test: AUTOMOC and AUTORCC on source files with the same name -# but in different subdirectories +# -- Test: AUTOMOC AUTORCC +# Source files with the same basename in different subdirectories add_subdirectory(sameName) +# -- Test: AUTOMOC AUTORCC AUTOUIC include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_definitions(-DFOO -DSomeDefine="Barx") @@ -142,6 +146,7 @@ target_link_libraries(libC LINK_PUBLIC libB) target_link_libraries(QtAutogen codeeditorLib ${QT_LIBRARIES} libC) +# -- Test: AUTOMOC, AUTORCC # Add not_generated_file.qrc to the source list to get the file-level # dependency, but don't generate a c++ file from it. Disable the AUTORCC # feature for this target. This tests that qrc files in the sources don't @@ -154,6 +159,8 @@ target_link_libraries(empty no_link_language) add_library(no_link_language STATIC empty.h) set_target_properties(no_link_language PROPERTIES AUTOMOC TRUE) +# -- Test: AUTORCC +# When a file listed in a .qrc file changes the target must be rebuilt try_compile(RCC_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/autorcc_depends" "${CMAKE_CURRENT_SOURCE_DIR}/autorcc_depends" @@ -187,7 +194,8 @@ if (NOT file1_step1 GREATER file1_before) message(SEND_ERROR "file1 (${qrc_file1}) should have changed in the first step!") endif() -#----------------------------------------------------------------------------- +# -- Test: AUTOMOC +# Ensure a repeated build succeeds when a header containing a QObject changes try_compile(MOC_RERUN "${CMAKE_CURRENT_BINARY_DIR}/automoc_rerun" "${CMAKE_CURRENT_SOURCE_DIR}/automoc_rerun" From c4d4becf8b79f68534eb8320ccd63218afa4ca31 Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Fri, 25 Nov 2016 15:12:04 +0100 Subject: [PATCH 6/7] QtAutogen tests: Move the complex test case to a subdirectory --- Tests/CMakeLists.txt | 2 +- Tests/QtAutogen/CMakeLists.txt | 93 ++----------------- .../{ => complex}/Adir/CMakeLists.txt | 0 Tests/QtAutogen/{ => complex}/Adir/libA.cpp | 0 Tests/QtAutogen/{ => complex}/Adir/libA.h | 0 .../{ => complex}/Bdir/CMakeLists.txt | 0 Tests/QtAutogen/{ => complex}/Bdir/libB.cpp | 0 Tests/QtAutogen/{ => complex}/Bdir/libB.h | 0 Tests/QtAutogen/complex/CMakeLists.txt | 78 ++++++++++++++++ Tests/QtAutogen/{ => complex}/abc.cpp | 0 Tests/QtAutogen/{ => complex}/abc.h | 0 Tests/QtAutogen/{ => complex}/abc_p.h | 0 Tests/QtAutogen/{ => complex}/bar.cpp | 0 Tests/QtAutogen/{ => complex}/blub.cpp | 0 Tests/QtAutogen/{ => complex}/blub.h | 0 Tests/QtAutogen/{ => complex}/calwidget.cpp | 0 Tests/QtAutogen/{ => complex}/calwidget.h | 0 Tests/QtAutogen/{ => complex}/calwidget.ui | 0 Tests/QtAutogen/{ => complex}/codeeditor.cpp | 0 Tests/QtAutogen/{ => complex}/codeeditor.h | 0 Tests/QtAutogen/{ => complex}/debug_class.cpp | 0 Tests/QtAutogen/{ => complex}/debug_class.h | 0 Tests/QtAutogen/{ => complex}/debug_class.ui | 0 .../{ => complex}/debug_resource.qrc | 0 Tests/QtAutogen/{ => complex}/foo.cpp | 0 Tests/QtAutogen/{ => complex}/foo.h | 0 Tests/QtAutogen/{ => complex}/gadget.cpp | 0 Tests/QtAutogen/{ => complex}/gadget.h | 0 Tests/QtAutogen/{ => complex}/generated.cpp | 0 Tests/QtAutogen/{ => complex}/generated.h | 0 .../QtAutogen/{ => complex}/generated.txt.in | 0 .../{ => complex}/generated_resource.qrc.in | 0 Tests/QtAutogen/{ => complex}/libC.cpp | 0 Tests/QtAutogen/{ => complex}/libC.h | 0 Tests/QtAutogen/{ => complex}/main.cpp | 0 .../{ => complex}/multiplewidgets.cpp | 0 .../QtAutogen/{ => complex}/multiplewidgets.h | 0 .../QtAutogen/{ => complex}/myinterface.h.in | 0 .../{ => complex}/myotherinterface.h.in | 0 .../QtAutogen/{ => complex}/private_slot.cpp | 0 Tests/QtAutogen/{ => complex}/private_slot.h | 0 .../{ => complex}/resourcetester.cpp | 0 .../QtAutogen/{ => complex}/resourcetester.h | 0 .../{ => complex}/second_resource.qrc | 0 .../QtAutogen/{ => complex}/second_widget.cpp | 0 Tests/QtAutogen/{ => complex}/second_widget.h | 0 .../QtAutogen/{ => complex}/second_widget.ui | 0 Tests/QtAutogen/{ => complex}/sub/bar.h | 0 .../{ => complex}/targetObjectsTest.cpp | 0 Tests/QtAutogen/{ => complex}/test.qrc | 0 Tests/QtAutogen/{ => complex}/widget1.ui | 0 Tests/QtAutogen/{ => complex}/widget2.ui | 0 Tests/QtAutogen/{ => complex}/xyz.cpp | 0 Tests/QtAutogen/{ => complex}/xyz.h | 0 Tests/QtAutogen/{ => complex}/yaf.cpp | 0 Tests/QtAutogen/{ => complex}/yaf.h | 0 Tests/QtAutogen/{ => complex}/yaf_p.h | 0 57 files changed, 89 insertions(+), 84 deletions(-) rename Tests/QtAutogen/{ => complex}/Adir/CMakeLists.txt (100%) rename Tests/QtAutogen/{ => complex}/Adir/libA.cpp (100%) rename Tests/QtAutogen/{ => complex}/Adir/libA.h (100%) rename Tests/QtAutogen/{ => complex}/Bdir/CMakeLists.txt (100%) rename Tests/QtAutogen/{ => complex}/Bdir/libB.cpp (100%) rename Tests/QtAutogen/{ => complex}/Bdir/libB.h (100%) create mode 100644 Tests/QtAutogen/complex/CMakeLists.txt rename Tests/QtAutogen/{ => complex}/abc.cpp (100%) rename Tests/QtAutogen/{ => complex}/abc.h (100%) rename Tests/QtAutogen/{ => complex}/abc_p.h (100%) rename Tests/QtAutogen/{ => complex}/bar.cpp (100%) rename Tests/QtAutogen/{ => complex}/blub.cpp (100%) rename Tests/QtAutogen/{ => complex}/blub.h (100%) rename Tests/QtAutogen/{ => complex}/calwidget.cpp (100%) rename Tests/QtAutogen/{ => complex}/calwidget.h (100%) rename Tests/QtAutogen/{ => complex}/calwidget.ui (100%) rename Tests/QtAutogen/{ => complex}/codeeditor.cpp (100%) rename Tests/QtAutogen/{ => complex}/codeeditor.h (100%) rename Tests/QtAutogen/{ => complex}/debug_class.cpp (100%) rename Tests/QtAutogen/{ => complex}/debug_class.h (100%) rename Tests/QtAutogen/{ => complex}/debug_class.ui (100%) rename Tests/QtAutogen/{ => complex}/debug_resource.qrc (100%) rename Tests/QtAutogen/{ => complex}/foo.cpp (100%) rename Tests/QtAutogen/{ => complex}/foo.h (100%) rename Tests/QtAutogen/{ => complex}/gadget.cpp (100%) rename Tests/QtAutogen/{ => complex}/gadget.h (100%) rename Tests/QtAutogen/{ => complex}/generated.cpp (100%) rename Tests/QtAutogen/{ => complex}/generated.h (100%) rename Tests/QtAutogen/{ => complex}/generated.txt.in (100%) rename Tests/QtAutogen/{ => complex}/generated_resource.qrc.in (100%) rename Tests/QtAutogen/{ => complex}/libC.cpp (100%) rename Tests/QtAutogen/{ => complex}/libC.h (100%) rename Tests/QtAutogen/{ => complex}/main.cpp (100%) rename Tests/QtAutogen/{ => complex}/multiplewidgets.cpp (100%) rename Tests/QtAutogen/{ => complex}/multiplewidgets.h (100%) rename Tests/QtAutogen/{ => complex}/myinterface.h.in (100%) rename Tests/QtAutogen/{ => complex}/myotherinterface.h.in (100%) rename Tests/QtAutogen/{ => complex}/private_slot.cpp (100%) rename Tests/QtAutogen/{ => complex}/private_slot.h (100%) rename Tests/QtAutogen/{ => complex}/resourcetester.cpp (100%) rename Tests/QtAutogen/{ => complex}/resourcetester.h (100%) rename Tests/QtAutogen/{ => complex}/second_resource.qrc (100%) rename Tests/QtAutogen/{ => complex}/second_widget.cpp (100%) rename Tests/QtAutogen/{ => complex}/second_widget.h (100%) rename Tests/QtAutogen/{ => complex}/second_widget.ui (100%) rename Tests/QtAutogen/{ => complex}/sub/bar.h (100%) rename Tests/QtAutogen/{ => complex}/targetObjectsTest.cpp (100%) rename Tests/QtAutogen/{ => complex}/test.qrc (100%) rename Tests/QtAutogen/{ => complex}/widget1.ui (100%) rename Tests/QtAutogen/{ => complex}/widget2.ui (100%) rename Tests/QtAutogen/{ => complex}/xyz.cpp (100%) rename Tests/QtAutogen/{ => complex}/xyz.h (100%) rename Tests/QtAutogen/{ => complex}/yaf.cpp (100%) rename Tests/QtAutogen/{ => complex}/yaf.h (100%) rename Tests/QtAutogen/{ => complex}/yaf_p.h (100%) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index e914d00457..6327f25179 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1243,7 +1243,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release set(run_autogen_test ${CMAKE_CTEST_COMMAND} -V) set(run_autouic_test ${CMAKE_CTEST_COMMAND} -V) else() - set(run_autogen_test QtAutogen) + set(run_autogen_test complex/QtAutogen) set(run_autouic_test QtAutoUicInterface) endif() if(NOT CMAKE_CONFIGURATION_TYPES) diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt index d09b24db36..c0c20f8bf6 100644 --- a/Tests/QtAutogen/CMakeLists.txt +++ b/Tests/QtAutogen/CMakeLists.txt @@ -44,6 +44,8 @@ else() endif() +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + # -- Test: AUTORCC # RCC only add_executable(rccOnly rccOnly.cpp rccOnlyRes.qrc) @@ -63,89 +65,6 @@ add_executable(uicOnly uicOnlySource/uiconly.cpp ${uicOnlyMoc}) set_property(TARGET uicOnly PROPERTY AUTOUIC ON) target_link_libraries(uicOnly ${QT_LIBRARIES}) -# -- Test: AUTOMOC AUTORCC -# Source files with the same basename in different subdirectories -add_subdirectory(sameName) - -# -- Test: AUTOMOC AUTORCC AUTOUIC -include_directories(${CMAKE_CURRENT_BINARY_DIR}) -add_definitions(-DFOO -DSomeDefine="Barx") - -# enable relaxed mode so automoc can handle all the special cases: -set(CMAKE_AUTOMOC_RELAXED_MODE TRUE) - -set(CMAKE_AUTOUIC ON) -set(CMAKE_AUTORCC ON) - -# create an executable and two library targets, each requiring automoc: -add_library(codeeditorLib STATIC codeeditor.cpp) - -add_library(privateSlot OBJECT private_slot.cpp) - -configure_file(generated_resource.qrc.in generated_resource.qrc @ONLY) -add_custom_command( - OUTPUT generated.txt - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/generated.txt.in" "${CMAKE_CURRENT_BINARY_DIR}/generated.txt" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/generated.txt.in" - ) - -add_custom_target(generate_moc_input - DEPENDS generated.txt - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/myinterface.h.in" "${CMAKE_CURRENT_BINARY_DIR}" - COMMAND ${CMAKE_COMMAND} -E rename "${CMAKE_CURRENT_BINARY_DIR}/myinterface.h.in" "${CMAKE_CURRENT_BINARY_DIR}/myinterface.h" -) - -add_custom_command( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/myotherinterface.h" - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/myotherinterface.h.in" "${CMAKE_CURRENT_BINARY_DIR}/myotherinterface.h" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/myotherinterface.h.in" -) - -if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_GENERATOR STREQUAL Ninja) - set(debug_srcs "$<$:debug_class.cpp>" $<$:debug_resource.qrc>) - set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$:TEST_DEBUG_CLASS>) -endif() - -# The -no-protection option disables the generation of include guards. Verify -# that setting the source file property has an effect by using this and -# issue an error in the preprocessor in calwidget.cpp if the include guard -# is defined. -set_source_files_properties(calwidget.ui PROPERTIES AUTOUIC_OPTIONS "-no-protection") - -add_executable(QtAutogen main.cpp calwidget.cpp second_widget.cpp foo.cpp blub.cpp bar.cpp abc.cpp - multiplewidgets.cpp - xyz.cpp yaf.cpp gadget.cpp $ - test.qrc second_resource.qrc resourcetester.cpp generated.cpp ${debug_srcs} - ${CMAKE_CURRENT_BINARY_DIR}/generated_resource.qrc -) -set_property(TARGET QtAutogen APPEND PROPERTY AUTOGEN_TARGET_DEPENDS generate_moc_input "${CMAKE_CURRENT_BINARY_DIR}/myotherinterface.h") - -add_executable(targetObjectsTest targetObjectsTest.cpp $) -target_link_libraries(targetObjectsTest ${QT_LIBRARIES}) - -set_target_properties( - QtAutogen codeeditorLib privateSlot targetObjectsTest - PROPERTIES - AUTOMOC TRUE -) - - -include(GenerateExportHeader) -# The order is relevant here. B depends on A, and B headers depend on A -# headers both subdirectories use CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE and we -# test that CMAKE_AUTOMOC successfully reads the include directories -# for the build interface from those targets. There has previously been -# a bug where caching of the include directories happened before -# extracting the includes to pass to moc. -add_subdirectory(Bdir) -add_subdirectory(Adir) -add_library(libC SHARED libC.cpp) -set_target_properties(libC PROPERTIES AUTOMOC TRUE) -generate_export_header(libC) -target_link_libraries(libC LINK_PUBLIC libB) - -target_link_libraries(QtAutogen codeeditorLib ${QT_LIBRARIES} libC) - # -- Test: AUTOMOC, AUTORCC # Add not_generated_file.qrc to the source list to get the file-level # dependency, but don't generate a c++ file from it. Disable the AUTORCC @@ -217,3 +136,11 @@ execute_process(COMMAND "${CMAKE_COMMAND}" --build . if (automoc_rerun_result) message(SEND_ERROR "Second build of automoc_rerun failed.") endif() + +# -- Test: AUTOMOC AUTORCC +# Source files with the same basename in different subdirectories +add_subdirectory(sameName) + +# -- Test: AUTOMOC AUTORCC AUTOUIC +# Complex test case +add_subdirectory(complex) diff --git a/Tests/QtAutogen/Adir/CMakeLists.txt b/Tests/QtAutogen/complex/Adir/CMakeLists.txt similarity index 100% rename from Tests/QtAutogen/Adir/CMakeLists.txt rename to Tests/QtAutogen/complex/Adir/CMakeLists.txt diff --git a/Tests/QtAutogen/Adir/libA.cpp b/Tests/QtAutogen/complex/Adir/libA.cpp similarity index 100% rename from Tests/QtAutogen/Adir/libA.cpp rename to Tests/QtAutogen/complex/Adir/libA.cpp diff --git a/Tests/QtAutogen/Adir/libA.h b/Tests/QtAutogen/complex/Adir/libA.h similarity index 100% rename from Tests/QtAutogen/Adir/libA.h rename to Tests/QtAutogen/complex/Adir/libA.h diff --git a/Tests/QtAutogen/Bdir/CMakeLists.txt b/Tests/QtAutogen/complex/Bdir/CMakeLists.txt similarity index 100% rename from Tests/QtAutogen/Bdir/CMakeLists.txt rename to Tests/QtAutogen/complex/Bdir/CMakeLists.txt diff --git a/Tests/QtAutogen/Bdir/libB.cpp b/Tests/QtAutogen/complex/Bdir/libB.cpp similarity index 100% rename from Tests/QtAutogen/Bdir/libB.cpp rename to Tests/QtAutogen/complex/Bdir/libB.cpp diff --git a/Tests/QtAutogen/Bdir/libB.h b/Tests/QtAutogen/complex/Bdir/libB.h similarity index 100% rename from Tests/QtAutogen/Bdir/libB.h rename to Tests/QtAutogen/complex/Bdir/libB.h diff --git a/Tests/QtAutogen/complex/CMakeLists.txt b/Tests/QtAutogen/complex/CMakeLists.txt new file mode 100644 index 0000000000..d1b34c61d5 --- /dev/null +++ b/Tests/QtAutogen/complex/CMakeLists.txt @@ -0,0 +1,78 @@ +cmake_minimum_required(VERSION 3.1) + +# -- Test: AUTOMOC AUTORCC AUTOUIC +include_directories(${CMAKE_CURRENT_BINARY_DIR}) +add_definitions(-DFOO -DSomeDefine="Barx") + +# enable relaxed mode so automoc can handle all the special cases: +set(CMAKE_AUTOMOC_RELAXED_MODE TRUE) +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTORCC ON) + +# create an executable and two library targets, each requiring automoc: +add_library(codeeditorLib STATIC codeeditor.cpp) +add_library(privateSlot OBJECT private_slot.cpp) + +configure_file(generated_resource.qrc.in generated_resource.qrc @ONLY) +add_custom_command( + OUTPUT generated.txt + COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/generated.txt.in" "${CMAKE_CURRENT_BINARY_DIR}/generated.txt" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/generated.txt.in" + ) + +add_custom_target(generate_moc_input + DEPENDS generated.txt + COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/myinterface.h.in" "${CMAKE_CURRENT_BINARY_DIR}" + COMMAND ${CMAKE_COMMAND} -E rename "${CMAKE_CURRENT_BINARY_DIR}/myinterface.h.in" "${CMAKE_CURRENT_BINARY_DIR}/myinterface.h" +) + +add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/myotherinterface.h" + COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/myotherinterface.h.in" "${CMAKE_CURRENT_BINARY_DIR}/myotherinterface.h" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/myotherinterface.h.in" +) + +if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_GENERATOR STREQUAL Ninja) + set(debug_srcs "$<$:debug_class.cpp>" $<$:debug_resource.qrc>) + set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$:TEST_DEBUG_CLASS>) +endif() + +# The -no-protection option disables the generation of include guards. Verify +# that setting the source file property has an effect by using this and +# issue an error in the preprocessor in calwidget.cpp if the include guard +# is defined. +set_source_files_properties(calwidget.ui PROPERTIES AUTOUIC_OPTIONS "-no-protection") + +add_executable(QtAutogen main.cpp calwidget.cpp second_widget.cpp foo.cpp blub.cpp bar.cpp abc.cpp + multiplewidgets.cpp + xyz.cpp yaf.cpp gadget.cpp $ + test.qrc second_resource.qrc resourcetester.cpp generated.cpp ${debug_srcs} + ${CMAKE_CURRENT_BINARY_DIR}/generated_resource.qrc +) +set_property(TARGET QtAutogen APPEND PROPERTY AUTOGEN_TARGET_DEPENDS generate_moc_input "${CMAKE_CURRENT_BINARY_DIR}/myotherinterface.h") + +add_executable(targetObjectsTest targetObjectsTest.cpp $) +target_link_libraries(targetObjectsTest ${QT_LIBRARIES}) + +set_target_properties( + QtAutogen codeeditorLib privateSlot targetObjectsTest + PROPERTIES + AUTOMOC TRUE +) + + +include(GenerateExportHeader) +# The order is relevant here. B depends on A, and B headers depend on A +# headers both subdirectories use CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE and we +# test that CMAKE_AUTOMOC successfully reads the include directories +# for the build interface from those targets. There has previously been +# a bug where caching of the include directories happened before +# extracting the includes to pass to moc. +add_subdirectory(Bdir) +add_subdirectory(Adir) +add_library(libC SHARED libC.cpp) +set_target_properties(libC PROPERTIES AUTOMOC TRUE) +generate_export_header(libC) +target_link_libraries(libC LINK_PUBLIC libB) + +target_link_libraries(QtAutogen codeeditorLib ${QT_LIBRARIES} libC) diff --git a/Tests/QtAutogen/abc.cpp b/Tests/QtAutogen/complex/abc.cpp similarity index 100% rename from Tests/QtAutogen/abc.cpp rename to Tests/QtAutogen/complex/abc.cpp diff --git a/Tests/QtAutogen/abc.h b/Tests/QtAutogen/complex/abc.h similarity index 100% rename from Tests/QtAutogen/abc.h rename to Tests/QtAutogen/complex/abc.h diff --git a/Tests/QtAutogen/abc_p.h b/Tests/QtAutogen/complex/abc_p.h similarity index 100% rename from Tests/QtAutogen/abc_p.h rename to Tests/QtAutogen/complex/abc_p.h diff --git a/Tests/QtAutogen/bar.cpp b/Tests/QtAutogen/complex/bar.cpp similarity index 100% rename from Tests/QtAutogen/bar.cpp rename to Tests/QtAutogen/complex/bar.cpp diff --git a/Tests/QtAutogen/blub.cpp b/Tests/QtAutogen/complex/blub.cpp similarity index 100% rename from Tests/QtAutogen/blub.cpp rename to Tests/QtAutogen/complex/blub.cpp diff --git a/Tests/QtAutogen/blub.h b/Tests/QtAutogen/complex/blub.h similarity index 100% rename from Tests/QtAutogen/blub.h rename to Tests/QtAutogen/complex/blub.h diff --git a/Tests/QtAutogen/calwidget.cpp b/Tests/QtAutogen/complex/calwidget.cpp similarity index 100% rename from Tests/QtAutogen/calwidget.cpp rename to Tests/QtAutogen/complex/calwidget.cpp diff --git a/Tests/QtAutogen/calwidget.h b/Tests/QtAutogen/complex/calwidget.h similarity index 100% rename from Tests/QtAutogen/calwidget.h rename to Tests/QtAutogen/complex/calwidget.h diff --git a/Tests/QtAutogen/calwidget.ui b/Tests/QtAutogen/complex/calwidget.ui similarity index 100% rename from Tests/QtAutogen/calwidget.ui rename to Tests/QtAutogen/complex/calwidget.ui diff --git a/Tests/QtAutogen/codeeditor.cpp b/Tests/QtAutogen/complex/codeeditor.cpp similarity index 100% rename from Tests/QtAutogen/codeeditor.cpp rename to Tests/QtAutogen/complex/codeeditor.cpp diff --git a/Tests/QtAutogen/codeeditor.h b/Tests/QtAutogen/complex/codeeditor.h similarity index 100% rename from Tests/QtAutogen/codeeditor.h rename to Tests/QtAutogen/complex/codeeditor.h diff --git a/Tests/QtAutogen/debug_class.cpp b/Tests/QtAutogen/complex/debug_class.cpp similarity index 100% rename from Tests/QtAutogen/debug_class.cpp rename to Tests/QtAutogen/complex/debug_class.cpp diff --git a/Tests/QtAutogen/debug_class.h b/Tests/QtAutogen/complex/debug_class.h similarity index 100% rename from Tests/QtAutogen/debug_class.h rename to Tests/QtAutogen/complex/debug_class.h diff --git a/Tests/QtAutogen/debug_class.ui b/Tests/QtAutogen/complex/debug_class.ui similarity index 100% rename from Tests/QtAutogen/debug_class.ui rename to Tests/QtAutogen/complex/debug_class.ui diff --git a/Tests/QtAutogen/debug_resource.qrc b/Tests/QtAutogen/complex/debug_resource.qrc similarity index 100% rename from Tests/QtAutogen/debug_resource.qrc rename to Tests/QtAutogen/complex/debug_resource.qrc diff --git a/Tests/QtAutogen/foo.cpp b/Tests/QtAutogen/complex/foo.cpp similarity index 100% rename from Tests/QtAutogen/foo.cpp rename to Tests/QtAutogen/complex/foo.cpp diff --git a/Tests/QtAutogen/foo.h b/Tests/QtAutogen/complex/foo.h similarity index 100% rename from Tests/QtAutogen/foo.h rename to Tests/QtAutogen/complex/foo.h diff --git a/Tests/QtAutogen/gadget.cpp b/Tests/QtAutogen/complex/gadget.cpp similarity index 100% rename from Tests/QtAutogen/gadget.cpp rename to Tests/QtAutogen/complex/gadget.cpp diff --git a/Tests/QtAutogen/gadget.h b/Tests/QtAutogen/complex/gadget.h similarity index 100% rename from Tests/QtAutogen/gadget.h rename to Tests/QtAutogen/complex/gadget.h diff --git a/Tests/QtAutogen/generated.cpp b/Tests/QtAutogen/complex/generated.cpp similarity index 100% rename from Tests/QtAutogen/generated.cpp rename to Tests/QtAutogen/complex/generated.cpp diff --git a/Tests/QtAutogen/generated.h b/Tests/QtAutogen/complex/generated.h similarity index 100% rename from Tests/QtAutogen/generated.h rename to Tests/QtAutogen/complex/generated.h diff --git a/Tests/QtAutogen/generated.txt.in b/Tests/QtAutogen/complex/generated.txt.in similarity index 100% rename from Tests/QtAutogen/generated.txt.in rename to Tests/QtAutogen/complex/generated.txt.in diff --git a/Tests/QtAutogen/generated_resource.qrc.in b/Tests/QtAutogen/complex/generated_resource.qrc.in similarity index 100% rename from Tests/QtAutogen/generated_resource.qrc.in rename to Tests/QtAutogen/complex/generated_resource.qrc.in diff --git a/Tests/QtAutogen/libC.cpp b/Tests/QtAutogen/complex/libC.cpp similarity index 100% rename from Tests/QtAutogen/libC.cpp rename to Tests/QtAutogen/complex/libC.cpp diff --git a/Tests/QtAutogen/libC.h b/Tests/QtAutogen/complex/libC.h similarity index 100% rename from Tests/QtAutogen/libC.h rename to Tests/QtAutogen/complex/libC.h diff --git a/Tests/QtAutogen/main.cpp b/Tests/QtAutogen/complex/main.cpp similarity index 100% rename from Tests/QtAutogen/main.cpp rename to Tests/QtAutogen/complex/main.cpp diff --git a/Tests/QtAutogen/multiplewidgets.cpp b/Tests/QtAutogen/complex/multiplewidgets.cpp similarity index 100% rename from Tests/QtAutogen/multiplewidgets.cpp rename to Tests/QtAutogen/complex/multiplewidgets.cpp diff --git a/Tests/QtAutogen/multiplewidgets.h b/Tests/QtAutogen/complex/multiplewidgets.h similarity index 100% rename from Tests/QtAutogen/multiplewidgets.h rename to Tests/QtAutogen/complex/multiplewidgets.h diff --git a/Tests/QtAutogen/myinterface.h.in b/Tests/QtAutogen/complex/myinterface.h.in similarity index 100% rename from Tests/QtAutogen/myinterface.h.in rename to Tests/QtAutogen/complex/myinterface.h.in diff --git a/Tests/QtAutogen/myotherinterface.h.in b/Tests/QtAutogen/complex/myotherinterface.h.in similarity index 100% rename from Tests/QtAutogen/myotherinterface.h.in rename to Tests/QtAutogen/complex/myotherinterface.h.in diff --git a/Tests/QtAutogen/private_slot.cpp b/Tests/QtAutogen/complex/private_slot.cpp similarity index 100% rename from Tests/QtAutogen/private_slot.cpp rename to Tests/QtAutogen/complex/private_slot.cpp diff --git a/Tests/QtAutogen/private_slot.h b/Tests/QtAutogen/complex/private_slot.h similarity index 100% rename from Tests/QtAutogen/private_slot.h rename to Tests/QtAutogen/complex/private_slot.h diff --git a/Tests/QtAutogen/resourcetester.cpp b/Tests/QtAutogen/complex/resourcetester.cpp similarity index 100% rename from Tests/QtAutogen/resourcetester.cpp rename to Tests/QtAutogen/complex/resourcetester.cpp diff --git a/Tests/QtAutogen/resourcetester.h b/Tests/QtAutogen/complex/resourcetester.h similarity index 100% rename from Tests/QtAutogen/resourcetester.h rename to Tests/QtAutogen/complex/resourcetester.h diff --git a/Tests/QtAutogen/second_resource.qrc b/Tests/QtAutogen/complex/second_resource.qrc similarity index 100% rename from Tests/QtAutogen/second_resource.qrc rename to Tests/QtAutogen/complex/second_resource.qrc diff --git a/Tests/QtAutogen/second_widget.cpp b/Tests/QtAutogen/complex/second_widget.cpp similarity index 100% rename from Tests/QtAutogen/second_widget.cpp rename to Tests/QtAutogen/complex/second_widget.cpp diff --git a/Tests/QtAutogen/second_widget.h b/Tests/QtAutogen/complex/second_widget.h similarity index 100% rename from Tests/QtAutogen/second_widget.h rename to Tests/QtAutogen/complex/second_widget.h diff --git a/Tests/QtAutogen/second_widget.ui b/Tests/QtAutogen/complex/second_widget.ui similarity index 100% rename from Tests/QtAutogen/second_widget.ui rename to Tests/QtAutogen/complex/second_widget.ui diff --git a/Tests/QtAutogen/sub/bar.h b/Tests/QtAutogen/complex/sub/bar.h similarity index 100% rename from Tests/QtAutogen/sub/bar.h rename to Tests/QtAutogen/complex/sub/bar.h diff --git a/Tests/QtAutogen/targetObjectsTest.cpp b/Tests/QtAutogen/complex/targetObjectsTest.cpp similarity index 100% rename from Tests/QtAutogen/targetObjectsTest.cpp rename to Tests/QtAutogen/complex/targetObjectsTest.cpp diff --git a/Tests/QtAutogen/test.qrc b/Tests/QtAutogen/complex/test.qrc similarity index 100% rename from Tests/QtAutogen/test.qrc rename to Tests/QtAutogen/complex/test.qrc diff --git a/Tests/QtAutogen/widget1.ui b/Tests/QtAutogen/complex/widget1.ui similarity index 100% rename from Tests/QtAutogen/widget1.ui rename to Tests/QtAutogen/complex/widget1.ui diff --git a/Tests/QtAutogen/widget2.ui b/Tests/QtAutogen/complex/widget2.ui similarity index 100% rename from Tests/QtAutogen/widget2.ui rename to Tests/QtAutogen/complex/widget2.ui diff --git a/Tests/QtAutogen/xyz.cpp b/Tests/QtAutogen/complex/xyz.cpp similarity index 100% rename from Tests/QtAutogen/xyz.cpp rename to Tests/QtAutogen/complex/xyz.cpp diff --git a/Tests/QtAutogen/xyz.h b/Tests/QtAutogen/complex/xyz.h similarity index 100% rename from Tests/QtAutogen/xyz.h rename to Tests/QtAutogen/complex/xyz.h diff --git a/Tests/QtAutogen/yaf.cpp b/Tests/QtAutogen/complex/yaf.cpp similarity index 100% rename from Tests/QtAutogen/yaf.cpp rename to Tests/QtAutogen/complex/yaf.cpp diff --git a/Tests/QtAutogen/yaf.h b/Tests/QtAutogen/complex/yaf.h similarity index 100% rename from Tests/QtAutogen/yaf.h rename to Tests/QtAutogen/complex/yaf.h diff --git a/Tests/QtAutogen/yaf_p.h b/Tests/QtAutogen/complex/yaf_p.h similarity index 100% rename from Tests/QtAutogen/yaf_p.h rename to Tests/QtAutogen/complex/yaf_p.h From 6938772a114099df406bc72cbc98a3c8d57cd458 Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Tue, 29 Nov 2016 18:11:01 +0100 Subject: [PATCH 7/7] QtAutogen tests: Pass Qt compiler features to library targets --- Tests/QtAutogen/CMakeLists.txt | 5 ++++- Tests/QtAutogen/complex/CMakeLists.txt | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt index c0c20f8bf6..c4d0567264 100644 --- a/Tests/QtAutogen/CMakeLists.txt +++ b/Tests/QtAutogen/CMakeLists.txt @@ -44,6 +44,7 @@ else() endif() +get_property(QT_COMPILE_FEATURES TARGET ${QT_QTCORE_TARGET} PROPERTY INTERFACE_COMPILE_FEATURES) include_directories(${CMAKE_CURRENT_BINARY_DIR}) # -- Test: AUTORCC @@ -72,11 +73,13 @@ target_link_libraries(uicOnly ${QT_LIBRARIES}) # have an effect on generation if AUTORCC is off. add_library(empty STATIC empty.cpp not_generated_file.qrc) set_target_properties(empty PROPERTIES AUTORCC OFF) - set_target_properties(empty PROPERTIES AUTOMOC TRUE) target_link_libraries(empty no_link_language) add_library(no_link_language STATIC empty.h) set_target_properties(no_link_language PROPERTIES AUTOMOC TRUE) +# Pass Qt compiler features to targets that don't link against Qt +target_compile_features(no_link_language PRIVATE ${QT_COMPILE_FEATURES}) +target_compile_features(empty PRIVATE ${QT_COMPILE_FEATURES}) # -- Test: AUTORCC # When a file listed in a .qrc file changes the target must be rebuilt diff --git a/Tests/QtAutogen/complex/CMakeLists.txt b/Tests/QtAutogen/complex/CMakeLists.txt index d1b34c61d5..0d44f50096 100644 --- a/Tests/QtAutogen/complex/CMakeLists.txt +++ b/Tests/QtAutogen/complex/CMakeLists.txt @@ -12,6 +12,9 @@ set(CMAKE_AUTORCC ON) # create an executable and two library targets, each requiring automoc: add_library(codeeditorLib STATIC codeeditor.cpp) add_library(privateSlot OBJECT private_slot.cpp) +# Pass Qt compiler features to targets that don't link against Qt +target_compile_features(codeeditorLib PRIVATE ${QT_COMPILE_FEATURES}) +target_compile_features(privateSlot PRIVATE ${QT_COMPILE_FEATURES}) configure_file(generated_resource.qrc.in generated_resource.qrc @ONLY) add_custom_command(