Mit MacOS Sierra, CMake 3.7.2 und Qt 5.8.0 mit Homebrew installiert. In dieser speziellen Anwendung vervollständigt Cmake ohne Fehler aber während des Build bekomme ich folgende Fehlermeldung:cmake findet Qt5Core, aber build.make meldet "Qt5 :: Core-NOTFOUND"
CMakeFiles/CereLink.dir/build.make:174: *** target pattern contains no `%'. Stop.
make[1]: *** [CMakeFiles/CereLink.dir/all] Error 2
make: *** [all] Error 2
Die Codezeile hat Qt5::Core-NOTFOUND
Es ist definitiv ein Problem mit dieser Anwendung, wie ich andere QT5-abhängige Anwendungen Diese Build ist korrekt, und diese Anwendung hängt von einem ExternalProject ab, das Qt5 verbindet, das auch korrekt baut! Die problematische Anwendung kann online gefunden werden.
cmake scheint Qt5 korrekt zu finden.
MitFIND_PROGRAM(QT_QMAKE_EXECUTABLE_FINDQT
NAMES
qmake qmake5 qmake-qt5
PATHS
"${QT_SEARCH_PATH}/bin"
"$ENV{QTDIR}/bin"
)
SET(QT_QMAKE_EXECUTABLE ${QT_QMAKE_EXECUTABLE_FINDQT} CACHE PATH "Qt qmake program.")
EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_PREFIX" OUTPUT_VARIABLE QT_INSTALL_PREFIX)
message(${QT_INSTALL_PREFIX})
berichtet /usr/local/Cellar/qt5/5.8.0_1
find_package(Qt5 COMPONENTS Core REQUIRED)
oder find_package(Qt5Core REQUIRED)
beide scheinen richtig zu arbeiten. Weitere Informationen finden Sie unter Zusätzliche Informationen.
EDIT - Zusätzliche Informationen:
message(${Qt5Core_FOUND})
druckt1
.message(${Qt5Core_LIBRARIES})
drucktQt5::Core
- manuell einstellen
Qt5Core_DIR
stattCMAKE_PREFIX_PATH
nicht etwas ändert. - Verknüpfung
Qt5Core
oder${Qt5Core_LIBRARIES}
(und zusätzliche enthält) hilft nicht. get_target_property(QtCore_location Qt5::Core IMPORTED_LOCATION_RELEASE)
:/usr/local/Cellar/qt5/5.8.0_1/lib/QtCore.framework/QtCore
Welche * Konfiguration * (* CMAKE_BUILD_TYPE *) verwenden Sie zum Kompilieren Ihres Projekts? Ich bin mir nicht sicher, ob das Extrahieren von * LOCATION * -Eigenschaft für * IMPORTED * -Ziel (wie 'QT5 :: Core') sinnvoll ist: Laut [Dokumentation] (https://cmake.org/cmake/help/v3.7/prop_tgt /LOCATION.html), 'diese schreibgeschützte Eigenschaft gibt den Wert der Eigenschaft LOCATION_ für eine nicht spezifizierte Konfiguration zurück, die vom Ziel bereitgestellt wird.' –
Tsyvarev
Was ist mit 'target_link_libraries ($ {target} PRIVATE Qt5Core)'? Es kann sein, dass Sie die Syntax 'Qt5 :: Core' nur verwenden können, wenn Sie sie mit' find_package (Qt5 COMPONENTS Core REQUIRED) 'importieren. – oLen
@Tsyvarev, das Problem besteht weiterhin, ob Debug oder Release in Xcode oder Release in gnu-make verwendet wird. Der Aufruf von 'get_target_property' sollte nur zeigen, dass das Qt5 :: Core 'target' existiert und einen vernünftigen Wert hat. –