Autogen: Check if we can run the MocOsMacros test

The MocOsMacros test requires moc to support moc_predefs.h
on some platforms (e.g. Mac). moc supports moc_predefs.h
inclusion since Qt 5.8, therefore run the MocOsMacros only if
Qt >= 5.8 and if CMAKE_CXX_COMPILER_PREDEFINES_COMMAND is
defined.

Fixes #18245
This commit is contained in:
Sebastian Holtermann 2018-08-07 16:14:31 +02:00
parent d7a52f8c24
commit e7fb85d00d
2 changed files with 25 additions and 9 deletions

View File

@ -24,7 +24,7 @@ if(QT_TEST_ALLOW_QT_MACROS)
ADD_AUTOGEN_TEST(MocCMP0071)
endif()
if(NOT QT_TEST_VERSION STREQUAL 4)
ADD_AUTOGEN_TEST(MocOsMacros mocOsMacros)
ADD_AUTOGEN_TEST(MocOsMacros)
endif()
ADD_AUTOGEN_TEST(UicInclude uicInclude)
ADD_AUTOGEN_TEST(UicInterface QtAutoUicInterface)

View File

@ -2,15 +2,31 @@ cmake_minimum_required(VERSION 3.11)
project(MocOsMacros)
include("../AutogenTest.cmake")
# Tests if moc processes the macro Q_OS_MAC
# Tests if moc processes Q_OS_XXX macros
set(CMAKE_AUTOMOC True)
message( "Qt5Core_VERSION: ${Qt5Core_VERSION}" )
message(
"CMAKE_CXX_COMPILER_PREDEFINES_COMMAND: "
${CMAKE_CXX_COMPILER_PREDEFINES_COMMAND} )
add_executable(mocOsMacros
main.cpp
TestClass.cpp
TestClass.hpp
# On some platforms (e.g. MAC) Q_OS_XXX requires moc to include moc_predefs.h
# which is supported since Qt 5.8 and requires
# CMAKE_CXX_COMPILER_PREDEFINES_COMMAND to be defined.
if( ( ${Qt5Core_VERSION} VERSION_GREATER_EQUAL "5.8" ) AND
DEFINED CMAKE_CXX_COMPILER_PREDEFINES_COMMAND
)
target_link_libraries(mocOsMacros PRIVATE ${QT_QTCORE_TARGET})
message( "Test enabled!" )
message(
"CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES: "
${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES} )
message ( "CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES: ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}" )
set(CMAKE_AUTOMOC True)
add_executable(mocOsMacros
main.cpp
TestClass.cpp
TestClass.hpp
)
target_link_libraries(mocOsMacros PRIVATE ${QT_QTCORE_TARGET})
else()
message( "Test disabled!" )
endif()