Ubuntu CM: quel chemin append pour CMAKE_MODULE_PATH

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) .

Après ajout de nouveau contenu

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.