Merge topic 'qt4-qt5-CMAKE_AUTOMOC'
fa55751
QtAutomoc: Get the Qt version through the target link interfacef776316
Use the qt5::moc imported target instead of a variable.
This commit is contained in:
commit
6d4e79e2c3
|
@ -6,10 +6,9 @@ set(AM_MOC_OPTIONS @_moc_options@)
|
|||
set(AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE "@CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE@")
|
||||
set(AM_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@/")
|
||||
set(AM_CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@/")
|
||||
set(AM_QT_MOC_EXECUTABLE "@QT_MOC_EXECUTABLE@")
|
||||
set(AM_QT_MOC_EXECUTABLE "@_qt_moc_executable@")
|
||||
set(AM_CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@/")
|
||||
set(AM_CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@/")
|
||||
set(AM_QT_VERSION_MAJOR "@QT_VERSION_MAJOR@" )
|
||||
set(AM_Qt5Core_VERSION_MAJOR "@Qt5Core_VERSION_MAJOR@" )
|
||||
set(AM_QT_VERSION_MAJOR "@_target_qt_version@")
|
||||
set(AM_TARGET_NAME @_moc_target_name@)
|
||||
set(AM_RELAXED_MODE "@_moc_relaxed_mode@")
|
||||
|
|
|
@ -309,6 +309,46 @@ void cmQtAutomoc::SetupAutomocTarget(cmTarget* target)
|
|||
cmLocalGenerator::EscapeForCMake(_moc_headers.c_str()).c_str());
|
||||
makefile->AddDefinition("_moc_relaxed_mode", relaxedMode ? "TRUE" : "FALSE");
|
||||
|
||||
const char *qtVersion = makefile->GetDefinition("Qt5Core_VERSION_MAJOR");
|
||||
if (!qtVersion)
|
||||
{
|
||||
qtVersion = makefile->GetDefinition("QT_VERSION_MAJOR");
|
||||
}
|
||||
if (const char *targetQtVersion =
|
||||
target->GetLinkInterfaceDependentStringProperty("QT_MAJOR_VERSION", 0))
|
||||
{
|
||||
qtVersion = targetQtVersion;
|
||||
}
|
||||
if (qtVersion)
|
||||
{
|
||||
makefile->AddDefinition("_target_qt_version", qtVersion);
|
||||
}
|
||||
|
||||
{
|
||||
const char *qtMoc = makefile->GetSafeDefinition("QT_MOC_EXECUTABLE");
|
||||
makefile->AddDefinition("_qt_moc_executable", qtMoc);
|
||||
}
|
||||
|
||||
if (strcmp(qtVersion, "5") == 0)
|
||||
{
|
||||
cmTarget *qt5Moc = makefile->FindTargetToUse("Qt5::moc");
|
||||
if (!qt5Moc)
|
||||
{
|
||||
cmSystemTools::Error("Qt5::moc target not found ",
|
||||
automocTargetName.c_str());
|
||||
return;
|
||||
}
|
||||
makefile->AddDefinition("_qt_moc_executable", qt5Moc->GetLocation(0));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strcmp(qtVersion, "4") != 0)
|
||||
{
|
||||
cmSystemTools::Error("The CMAKE_AUTOMOC feature supports only Qt 4 and "
|
||||
"Qt 5 ", automocTargetName.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT");
|
||||
std::string inputFile = cmakeRoot;
|
||||
inputFile += "/Modules/AutomocInfo.cmake.in";
|
||||
|
|
|
@ -1044,6 +1044,20 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
|
|||
--test-command ${CMAKE_CTEST_COMMAND} -V
|
||||
)
|
||||
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt4Targets")
|
||||
|
||||
if(Qt5Widgets_FOUND AND NOT Qt5Widgets_VERSION VERSION_LESS 5.1.0)
|
||||
add_test(Qt4And5Automoc ${CMAKE_CTEST_COMMAND}
|
||||
--build-and-test
|
||||
"${CMake_SOURCE_DIR}/Tests/Qt4And5Automoc"
|
||||
"${CMake_BINARY_DIR}/Tests/Qt4And5Automoc"
|
||||
${build_generator_args}
|
||||
--build-project Qt4And5Automoc
|
||||
--build-exe-dir "${CMake_BINARY_DIR}/Tests/Qt4And5Automoc"
|
||||
--force-new-ctest-process
|
||||
--test-command ${CMAKE_CTEST_COMMAND} -V
|
||||
)
|
||||
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt4And5Automoc")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_test(ExternalProject ${CMAKE_CTEST_COMMAND}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
project(Qt4And5Automoc)
|
||||
|
||||
find_package(Qt4 REQUIRED)
|
||||
find_package(Qt5Core REQUIRED)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
|
||||
add_executable(qt4_exe main_qt4.cpp)
|
||||
target_link_libraries(qt4_exe Qt4::QtCore)
|
||||
add_executable(qt5_exe main_qt5.cpp)
|
||||
target_link_libraries(qt5_exe Qt5::Core)
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
#include <QObject>
|
||||
|
||||
class SomeObject : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit SomeObject(QObject *parent = 0)
|
||||
: QObject(parent)
|
||||
{
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
#include "main.cpp"
|
||||
|
||||
#include "main_qt4.moc"
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
#include "main.cpp"
|
||||
|
||||
#include "main_qt5.moc"
|
Loading…
Reference in New Issue