FindQt4: Make AUTOMOC work regardless which order Qt 4/5 is found.
Commit 321e348e
(QtAutogen: Use Qt 4 IMPORTED targets to find
executable locations., 2014-01-24) attempted to fix this problem,
but only solved it for a particular ordering of find_package for
Qt 4 and Qt 5.
Add a test to ensure that it works with both orderings.
This commit is contained in:
parent
f7ae1d8ad6
commit
1fc9ecfae6
|
@ -589,6 +589,14 @@ _qt4_find_qmake("${_QT4_QMAKE_NAMES}" QT_QMAKE_EXECUTABLE QTVERSION)
|
|||
|
||||
if (QT_QMAKE_EXECUTABLE AND QTVERSION)
|
||||
|
||||
if (Qt5Core_FOUND)
|
||||
# Qt5CoreConfig sets QT_MOC_EXECUTABLE as a non-cache variable to the Qt 5
|
||||
# path to moc. Unset that variable when Qt 4 and 5 are used together, so
|
||||
# that when find_program looks for moc, it is not set to the Qt 5 version.
|
||||
# If FindQt4 has already put the Qt 4 path in the cache, the unset()
|
||||
# command 'unhides' the (correct) cache variable.
|
||||
unset(QT_MOC_EXECUTABLE)
|
||||
endif()
|
||||
if (QT_QMAKE_EXECUTABLE_LAST)
|
||||
string(COMPARE NOTEQUAL "${QT_QMAKE_EXECUTABLE_LAST}" "${QT_QMAKE_EXECUTABLE}" QT_QMAKE_CHANGED)
|
||||
endif()
|
||||
|
|
|
@ -1168,6 +1168,18 @@ ${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/Qt4And5Automoc")
|
||||
add_test(Qt4And5AutomocReverse ${CMAKE_CTEST_COMMAND}
|
||||
--build-and-test
|
||||
"${CMake_SOURCE_DIR}/Tests/Qt4And5Automoc"
|
||||
"${CMake_BINARY_DIR}/Tests/Qt4And5AutomocReverse"
|
||||
${build_generator_args}
|
||||
--build-project Qt4And5Automoc
|
||||
--build-exe-dir "${CMake_BINARY_DIR}/Tests/Qt4And5AutomocReverse"
|
||||
--force-new-ctest-process
|
||||
--build-options ${build_options} -DQT_REVERSE_FIND_ORDER=1
|
||||
--test-command ${CMAKE_CTEST_COMMAND} -V
|
||||
)
|
||||
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt4And5AutomocReverse")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
@ -2,8 +2,13 @@ cmake_minimum_required(VERSION 2.8.12)
|
|||
|
||||
project(Qt4And5Automoc)
|
||||
|
||||
find_package(Qt4 REQUIRED)
|
||||
find_package(Qt5Core REQUIRED)
|
||||
if (QT_REVERSE_FIND_ORDER)
|
||||
find_package(Qt5Core REQUIRED)
|
||||
find_package(Qt4 REQUIRED)
|
||||
else()
|
||||
find_package(Qt4 REQUIRED)
|
||||
find_package(Qt5Core REQUIRED)
|
||||
endif()
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
|
|
Loading…
Reference in New Issue