Mon système d’exploitation est Ubuntu. J’aimerais passer de QT4 à QT5 dans mon projet. Le package natif est cependant la version 4.x dans Ubuntu pour le moment.
J’ai téléchargé le programme d’installation Linux à partir de la page d’accueil QT et installé QT5.4 sous /opt/Qt/5.4/
Ce chemin n’est pas trouvé par
find_package (Qt5 REQUIRED)
J’ai essayé d’append
set(CMAKE_MODULE_PATH "/opt/QT/5.4;${CMAKE_MODULE_PATH}")
à mon CMAKELIST.txt
mais cela ne aide pas.
Où dois-je créer un lien ou j’utilise une syntaxe incorrecte?
Quelques modifications après avoir laissé entendre:
cmake -DCMAKE_PREFIX_PATH=/opt/QT/5.4/gcc_64/ ../src/
J’ai également supprimé la variable CMAKE_MODULE_PATH. Je reçois toujours la même erreur:
CMake Error at CMakeLists.txt:3 (find_package): Found package configuration file: /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake but it set Qt5_FOUND to FALSE so package "Qt5" is considered to be NOT FOUND. Reason given by package: The Qt5 package requires at least one component
Je ne sais pas pourquoi cela se produit après la lecture de https://blogs.kde.org/2008/12/12/how-get-cmake-find-what-you-want-it . Là, il est indiqué que le chemin sera recherché avant les répertoires de recherche par défaut. Le chemin que j’ai utilisé semble être en ce moment:
/opt/QT/5.4/gcc_64/
Ajouter le sous-dossier gcc_64 doit être correct, car ce sous-dossier a “lib”, “include” ect en tant que sous-dossiers.
Je me souviens que j’ai appelé aussi
sudo apt-get install QT5-default
il y a quelque temps. Cela n’a pas aidé, j’avais besoin du programme d’installation de QT. Bien que j’ai de nouveau supprimé qt5-default pour empêcher cmake de trouver le mauvais fichier de configuration du paquet, la même erreur apparaît.
Voir la discussion ci-dessous, déplacée ici: Cmake et QT5 – Inclure ne prend qu’un argument
Vous devez utiliser la variable CMAKE_PREFIX_PATH
, c.-à-d. CMAKE_PREFIX_PATH
cmake -DCMAKE_PREFIX_PATH=/opt/QT/5.4
à la racine de votre arbre de construction. Ensuite, vous pouvez utiliser find_package(Qt5 ...)
etc. Voir aussi la documentation Qt5 cmake .
Distinction approximative au sein de votre foyer:
CMAKE_MODULE_PATH
est pour l’ inclusion “générale” de fichiers et les fichiers “FindXXX.cmake” dans find_package(... MODULE)
. CMAKE_PREFIX_PATH
a une signification particulière dans le contexte de find_package(... CONFIG)
. c’est une nouvelle erreur et devrait donc nécessiter une nouvelle question. si vous aviez cette erreur avant d’avoir déjà trouvé le fichier Qt5 config.cmake 🙂
de toute façon, comme le dit l’erreur
Le package Qt5 nécessite au moins un composant
vous devez spécifier un composant du paquet Qt5. Comme le dit la documentation de cmake , vous devez utiliser l’interface find_package (Qt5 COMPARENTS REQUIS Widgets Core …) pour que cmake (mieux: la logique de Qt5 FindQt5.cmake) sache ce qu’il faut rechercher. cela vous donnera les cibles Qt5::Widgets
etc. à utiliser / à lier. Je ne sais pas si la syntaxe find_package(Qt5Widgets REQUIRED)
fonctionne, pourrait être équivalente.