Initially we didn't do this because someone could accidentally create
another target of a conflicting name, and used a variable to store whether we
have created the target already or not.
That wasn't adequeate to deal with finding the package in a scope
like a function, so we used a directory property. However, the directory
property is not valid in the same scopes as the defined target. For
example, finding a Qt module in both a directory and a subdirectory causes
a conflict.
As it is already unlikely that a target would be accidentally created with
a name like Qt5::Core, we should simply use the IF(TARGET) form.
Change-Id: If64f25d45f51edcd1edb0d4bfb5ed3bb2479bd27
Reviewed-by: David Faure <faure@kde.org>
!!ENDIF # Static
-get_property(_qt5$${CMAKE_MODULE_NAME}TargetExists DIRECTORY PROPERTY _Qt5$${CMAKE_MODULE_NAME}_target)
-if (NOT _qt5$${CMAKE_MODULE_NAME}TargetExists)
- set_property(DIRECTORY PROPERTY _Qt5$${CMAKE_MODULE_NAME}_target TRUE)
+if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
!!IF !isEmpty(CMAKE_STATIC_TYPE)
add_library(Qt5::$${CMAKE_MODULE_NAME} STATIC IMPORTED)
!!ELSE
if (Qt5DBus_FOUND AND NOT APPLE)
expect_pass(pass9)
endif()
+expect_pass(pass10)
--- /dev/null
+
+cmake_minimum_required(VERSION 2.8)
+
+project(pass10)
+
+find_package(Qt5Core REQUIRED)
+
+add_subdirectory(subdir1)
+
--- /dev/null
+
+find_package(Qt5Core REQUIRED)