2016-06-04 8 views
1

Ich benutze Qt4 seit einiger Zeit erfolgreich. Ich kann CMake-Befehle wie QT4_WRAP_CPP, QT4_WRAP_UI usw. verwenden. Jetzt habe ich Qt5 installiert, aber aus irgendeinem Grund erkennt Qt meine Installation nicht. Ich erhalte diesen Fehler.Woher weiß CMake, welche Version von Qt verwendet werden soll?

CMake Error at /example/project/dir/build_target.cmake:102 (QT5_WRAP_CPP): 
    Unknown CMake command "QT5_WRAP_CPP". 

Wie kann ich

  • prüfen, welche Versionen von Qt von CMake zu finden sind?
  • Geben Sie die Version von Qt an, die CMake verwenden soll?
  • Sicherstellen, dass Qt richtig installiert ist?
+3

Was ist Ihre CMake-Version? Hast du [dies gelesen] (http://doc.qt.io/qt-5/cmake-manual.html) und CMAKE_PREFIX_PATH richtig gesetzt? Kannst du es mit einem neuen grundlegendsten Projekt versuchen und kurz .cmake und sehen, ob es dann schief geht und ob es uns die Datei gibt, die du benutzt um es zu erstellen? – coyotte508

Antwort

3

Wenn Sie FindQt3 oder FindQt4 es finden Sie Qt 3 oder 4. Mit FindQt versucht es Qt 3 oder 4 zu finden und Sie können die DESIRED_QT_VERSION (3 oder 4) angeben. Zur Zeit mit CMake 3.5 findet es Qt 5 nicht.

Für Qt 5 gibt es keine speziellen Suchbefehle mehr, Sie müssen nach bestimmten Teilen von Qt 5 suchen, ihre Widgets mit find_package(Qt5Widgets) auszeichnen. Die Version wird dann in Qt5Widgets_VERSION gespeichert.

Siehe auch Dokumentation: http://doc.qt.io/qt-5/cmake-manual.html

Warum ist das so kompliziert? In der Vergangenheit versuchte CMake, ein find * -Modul für jede unterstützte Software bereitzustellen. Die Liste der Module wuchs schnell und mit jeder neuen Version von Boost, Qt, Gtk usw. mussten die Module getestet und oft modifiziert werden. Dieses System wurde nicht skaliert.
Jetzt bevorzugt CMake Konfigurationsdateien, die von der Software von Drittanbietern selbst bereitgestellt werden. Bis Qt4 stellte CMake ein Suchmodul zur Verfügung. Ab Qt 5 stellt Qt die Konfigurationsdateien bereit.

Normalerweise überprüfen Sie mit CMake nicht, ob eine Bibliothek korrekt installiert ist. Mit Autotools waren diese Überprüfungen üblich, aber nicht mit CMake. Wahrscheinlich benötigen diese Prüfungen einige Zeit und es liegt in der Verantwortung des Benutzers, über funktionierende Bibliotheken zu verfügen.

+0

Vielen Dank für die Hintergrundinformationen und Einblicke. –

Verwandte Themen