On Monday 14 May 2012, Alexander Neundorf wrote: > On Monday 14 May 2012, David Faure wrote: > > On Monday 14 May 2012 18:10:19 David Faure wrote: > > > Hi (Steve), > > > > > > It seems that updating Qt5 to the latest master broke my > > > kdelibs-frameworks-qt5 build? > > > > > > CMake Error at > > > /d/qt/5/qtbase-master/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:60 > > > (add_library): add_library cannot create imported target "Qt5::Core" > > > because another target with the same name already exists. > > > Call Stack (most recent call first): > > > > > > /d/kde/inst/kde_frameworks-qt5/share/ECM-0.0.4/find-modules/FindQt5Tran > > > si ti onal.cmake:2 (find_package) tier1/itemmodels/CMakeLists.txt:19 > > > (find_package) > > > > > > (and many more such errors about duplicate targets) > > > > > > Unfortunately cmake doesn't say *where* it saw the target the first > > > time, so I have no clue how to debug this. > > > > Actually it seems to happen both times in the same file. > > It's trying to prevent calling add_library(Qt5::Core SHARED IMPORTED) > > twice, but the mechanism to prevent that is not working... > > > > Qt5CoreConfig.cmake says: > > > > get_property(_qt5CoreTargetExists DIRECTORY PROPERTY _Qt5Core_target) > > if (NOT _qt5CoreTargetExists) > > > > set_property(DIRECTORY PROPERTY _Qt5Core_target TRUE) > > message(STATUS "DF: Qt5CoreConfig.cmake add_library(Qt5::Core SHARED > > > > IMPORTED)") add_library(Qt5::Core SHARED IMPORTED) > > endif() > > > > but the output from make says > > [...] > > -- DF: Qt5CoreConfig.cmake add_library(Qt5::Core SHARED IMPORTED) > > [...] > > -- DF: Qt5CoreConfig.cmake add_library(Qt5::Core SHARED IMPORTED) > > [...] > > > > so clearly this "directory property" stuff isn't working. > > I'm quite sure it, but maybe not as we think it does ;-)
A directory property seems to be only valid for this directory, and is not inherited to subdirs. This is kind of in sync with the docs for set_property(... DIRECTORY ...): "DIRECTORY scope defaults to the current directory but another directory (already processed by CMake) may be named by full or relative path." but not really for set_directory_properties(): "Set a property for the current directory and subdirectories." I just checked, this indeed changed (broke ?) from cmake 2.6.4 to 2.8.0. So this looks really like a regression in cmake :-/. For now, you can change the code e.g. to if (NOT TARGET Qt5::Core) message(STATUS "DF: Qt5CoreConfig.cmake add_library(Qt5::Core)") add_library(Qt5::Core SHARED IMPORTED) endif() OR if (NOT _qt5CoreTargetExists) set(_Qt5Core_target TRUE) message(STATUS "DF: Qt5CoreConfig.cmake add_library(Qt5::Core)") add_library(Qt5::Core SHARED IMPORTED) endif() both should fix it for now. Alex
_______________________________________________ Kde-frameworks-devel mailing list Kde-frameworks-devel@kde.org https://mail.kde.org/mailman/listinfo/kde-frameworks-devel