Use IF(NOT TARGET ...) before creating imported targets.
authorStephen Kelly <stephen.kelly@kdab.com>
Tue, 15 May 2012 12:35:42 +0000 (14:35 +0200)
committerQt by Nokia <qt-info@nokia.com>
Tue, 15 May 2012 21:03:23 +0000 (23:03 +0200)
commitf16a77d78342acba9df2195dd20c9e2ce06a61ff
tree03a349df494d39a95d459cc16506b45a3b1ce694
parent4f7a6bdabe1f0e73e9895ae8676449fda591718f
Use IF(NOT TARGET ...) before creating imported targets.

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>
mkspecs/cmake/Qt5BasicConfig.cmake.in
tests/auto/cmake/CMakeLists.txt
tests/auto/cmake/pass10/CMakeLists.txt [new file with mode: 0644]
tests/auto/cmake/pass10/subdir1/CMakeLists.txt [new file with mode: 0644]