Files
CMake/Tests/QtAutogen/MocSkipSource/CMakeLists.txt
T
Brad King 1c3d2d0951 Tests: Skip Qt*Autogen.MocSkipSource case for Xcode "new build system"
This test case enables AUTOMOC on the same sources in two separate targets.
This causes the `moc_*.cpp` generation custom commands to be added to multiple
`_autogen` targets, which is not allowed by the Xcode "new build system".
Skip the part of the test that triggers this problem for now.

Issue: #21205
2020-09-18 13:46:39 -04:00

44 lines
1.4 KiB
CMake

cmake_minimum_required(VERSION 3.10)
project(MocSkipSource)
include("../AutogenCoreTest.cmake")
# Test for SKIP_AUTOMOC and SKIP_AUTOGEN on an AUTOMOC enabled target
# Generate header mocs manually
qtx_wrap_cpp(skipMocWrapMoc
qItemA.hpp
qItemB.hpp
qItemC.hpp
qItemD.hpp
)
set(skipMocSources
skipMoc.cpp
qItemA.cpp
qItemB.cpp
qItemC.cpp
qItemD.cpp
)
# When cpp files are skipped, the hpp won't be processed either,
# unless they are mentioned in the sources - which they aren't.
set_property(SOURCE qItemA.cpp PROPERTY SKIP_AUTOMOC ON)
set_property(SOURCE qItemB.cpp PROPERTY SKIP_AUTOGEN ON)
# When hpp files are skipped, the cpp still get processed.
set_property(SOURCE qItemC.hpp PROPERTY SKIP_AUTOMOC ON)
set_property(SOURCE qItemD.hpp PROPERTY SKIP_AUTOGEN ON)
# AUTOMOC enabled only
add_executable(skipMocA ${skipMocSources} ${skipMocWrapMoc})
set_property(TARGET skipMocA PROPERTY AUTOMOC ON)
target_link_libraries(skipMocA ${QT_LIBRARIES})
if(CMAKE_XCODE_BUILD_SYSTEM VERSION_GREATER_EQUAL 12)
# FIXME: Fix AUTOMOC for the Xcode "new build system" to avoid
# duplicating custom commands in multiple _autogen targets.
return()
endif()
# AUTOMOC and AUTOUIC enabled
add_executable(skipMocB ${skipMocSources} ${skipMocWrapMoc})
set_property(TARGET skipMocB PROPERTY AUTOMOC ON)
set_property(TARGET skipMocB PROPERTY AUTOUIC ON)
target_link_libraries(skipMocB ${QT_LIBRARIES})