CMake & QT5 - QT5_WRAP_UI pas de générer des fichiers d'en-tête de l'interface utilisateur
J'ai un simple CMakeLists.txt qui ressemble à ceci:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(calculator)
FIND_PACKAGE(Qt5Core)
FIND_PACKAGE(Qt5Gui)
FIND_PACKAGE(Qt5Widgets)
SET(CMAKE_AUTOMOC ON)
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
SET(calculator_SOURCES main.cpp mainwindow.cpp)
SET(calculator_HEADERS mainwindow.h)
SET(calculator_FORMS mainwindow.ui)
QT5_WRAP_CPP(calculator_HEADERS_MOC ${calculator_HEADERS})
QT5_WRAP_UI(calculator_FORMS_HEADERS ${calculator_FORMS})
ADD_LIBRARY(calculator_CONFIG ${calculator_HEADERS_MOC} ${calculator_FORMS_HEADERS})
QT5_USE_MODULES(calculator_CONFIG Widgets)
ADD_EXECUTABLE(calculator ${calculator_SOURCES} ${calculator_CONFIG})
QT5_USE_MODULES(calculator Core Gui Widgets)
Et quand j'essaie de compiler le projet à l'aide de cmake -G "Unix Makefiles"
et par la suite make
, la console dit que ui_mainwindow.h
n'est pas trouvé. Quel est le problème? C'est à mon fichier cmake?
Complet De L'Erreur De Sortie:
[ 22%] Building CXX object CMakeFiles/calculator.dir/mainwindow.cpp.o
/home/centurion/Code/cpp/calculator/mainwindow.cpp:2:27: fatal error: ui_mainwindow.h: No such file or directory
#include "ui_mainwindow.h"
^
compilation terminated.
make[2]: *** [CMakeFiles/calculator.dir/mainwindow.cpp.o] Error 1
make[1]: *** [CMakeFiles/calculator.dir/all] Error 2
make: *** [all] Error 2
OriginalL'auteur Kenny Worden | 2014-09-16
Vous devez vous connecter pour publier un commentaire.
Utiliser les minuscules cmake commandes. Qui a été le sane convention pendant des années.
Pourquoi êtes-vous à l'aide de deux AUTOMOC et qt5_wrap_cpp? AUTOMOC est conçu pour remplacer la macro. http://www.cmake.org/cmake/help/v3.0/manual/cmake-qt.7.html#automoc
Si l'utilisation de CMake 2.8.11 ou plus tard, alors n'utilisez pas qt5_use_modules. J'ai écrit que comme une solution hack jusqu'à CMake 2.8.11 a été libéré. Le target_link_libraries commande ne ce qt5_use_modules n', mais mieux et plus génériquement. http://doc-snapshot.qt-project.org/qt5-5.3/cmake-manual.html
La bibliothèque n'a pas de sources de sa propre et n'est pas utilisé. Vous êtes clairement le "faire mal", ici. Déplacer le ${calculator_FORMS_HEADERS} variable d'utilisation pour les fichiers exécutables les sources. Puis, après avoir abordé le point 2, supprimer la bibliothèque.
Cette réponse semble un peu condescendant; j'espère que je suis juste une erreur de lecture (je n'ai pas -1). CMake lui-même est ridiculement difficile à raisonner et à la Qt de la magie ne le rend pas plus facile.
Je suis arrivé à cette question, la recherche de quelque chose d'autre, mais #2 m'a intrigué alors j'ai enlevé le qt5_wrap_cpp de mon CMakeLists.txt et il a cassé avec symbole externe non résolu les erreurs. Ajouté le dos et il fonctionne très bien. J'ai CMAKE_AUTOMOC réglé SUR on. Je ne finissent par retirer le automoc paramètre comme il semble ne rien faire.
Le doc lien 3. est morte.
J'ai atterri ici parce que d'un problème similaire, mais rien de cela ne "sain d'esprit" tout ça est en cours d'utilisation, donc je dois avoir trouvé les exemples plus récents/tutoriels que la pauvre âme qui a posé cette question. Comme quelqu'un de nouveau à CMake, mais pas nouveau logiciel moderne et de construire des procs et de l'outillage, il n'est pas facile à comprendre. En plus de cela, nous savons tous que personne ne semble s'en frotter le filet de l'obsolescence des "guides", etc.
OriginalL'auteur steveire
Que je courais dans le même problème avec cmake 3.2.2. Essayez d'utiliser
si l'interface utilisateur des fichiers ne sont pas générées. Peut-être le comportement par défaut a changé récemment?
Cela a également résolu le problème pour moi. Ce serait bien si le tutoriel dans la documentation officielle pourrait être résolu.
OriginalL'auteur Goldfishslayer
J'ai rencontré le même problème sur Mac OS X. l'Interface utilisateur en-tête de formulaire de fichier n'est pas généré.
J'ai résolu mon problème en générant manuellement .h fichier avec QtDesigner. Lorsque des modifications sont apportées sur la forme de l'interface utilisateur, le fichier d'en-tête est bien généré.
Note: si j'en ajouter quelques autres formes de l'interface utilisateur, les en-têtes sont générés automatiquement, sans besoin de générer de l'en-tête de fichier manuellement pour ces autres de l'interface utilisateur.
EDIT: en-tête de fichier est généré au premier build que s'il n'est pas utilisé dans le rpc code.
OriginalL'auteur Clément