Bonjour,
je fait face à un bug dont je n'arrive pas à trouver la source.
Depuis très longtemps j'ai un petit script qui récupère la branche master de QElectroTech puis le compil et l'installe pour finir. Tout fonctionnais très bien depuis des années jusqu'à il y a trois jours.
J'ai donc fait les choses à la main, et j’obtiens cette erreur :
In file included from ../sources/ui/configpage/configpages.cpp:25:
../../compil_master/../qetapp.h:21:10: fatal error: ElementsCollection/elementslocation.h: Aucun fichier ou dossier de ce type
21 | #include "ElementsCollection/elementslocation.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Je tient à préciser que le fichier en question est bien présent.
La où ça devient étrange c'est qu'en passant par Qt creator (l'ide que j'utilise) ça compile très bien aussi bien avec gcc que clang.
Après avoir mis à jour gcc, g++, clang, make, qmake, toutes leur dépendances, et profité pour faire du nettoyage et virer les anciennes version de clang, gcc, g++, idem impossible de compiler j'ai la même erreur, mais dans Qt creator ça fonctionne.
Comme j'ai timeshift d'installer j'ai fait un cliché actuel, puis une restauration à une date très ancienne où je suis sure que les choses marchais bien, mais idem.
Du coup je suis revenue avec timeshift sur le cliché actuel.
Au vue de ce qui se passe j'ai un doute… je crée un nouvel utilisateur et la tout marche bien.
Je me pose la question, cela viendrais d'une config de ma session, mais quoi ?
Avez vous des pistes ?
Pour info voici les commande que j'effectue
git clone git://git.tuxfamily.org/gitroot/qet/qet.git /chemin/vers/qelectrotech
cd /chemin/vers/qelectrotech
mkdir build
cd build
qmake ../qelectrotech.pro
make -j16
C'est lors du make que je me paie l'erreur.
Merci d'avance.
# qmake
Posté par gorbal . Évalué à 1.
Ton problème est probablement dans l'appel de qmake, il génère un Makefile qui ne permet pas au compilateur des retrouver tous les fichiers.
Le premier test que je ferais serais de ne pas utiliser de chemin relatif lors de l'appel à qmake.
Puisque la compilation sous QtCreator fonction, il est possible de retrouver la commande qmake utilisée par QtCreator (dans Projects->Build). Cela peut également aider.
[^] # Re: qmake
Posté par joshua (site web personnel) . Évalué à 1.
Je l'ai oublié dans le premier post, mais déjà fait.
Dans le doute je l'ai refait, alors effectivement QtCreator fait appel a
au lieu de
en console l'appel à make est le même que QtCreator, mais toujours le même problème.
Voici les retours de whereis sur ma session et la session 'vierge' il sont identiques.
J'ai aussi fait un test tout con, dans le fichier en question ElementsCollection/elementslocation.h j'ai écrit n'importe quoi afin de faire une vrai erreur, et lors de la compilation j'ai bien l'erreur :
cette erreur ce produit beaucoup plus tôt durant la compilation, ce qui prouve bien que le fichier existe et que make le trouve bien.
Dévellopeur QElectroTech
[^] # Re: qmake
Posté par joshua (site web personnel) . Évalué à 2.
Comme quoi la nuit porte conseil, j'ai trouvé la solution sans pour autant comprendre ce qui se passe.
J'ai repris depuis la base
Je suis donc allé voir dans
il y a bien la ligne
le truc étrange c'est que ce include n'est bon car qetapp.h est dans le dossier "sources" et non pas dans le dossier "sources/ui" comme le laisse sous entendre le include.
j'ai modifié la ligne en
Et ça marche !!
Mais il y a encore un truc qui me chagrine car les lignes suivante de l'erreur à la compilation sont :
ce qui pour moi signifie bien que qetapp.h à été trouvé alors que le chemin est faux et la ligne 21 correspond bien.
Du coup pour tester j'ai remis toutes les sources à l'état initial, et pour essayer, dans qetapp.h j'ai modifier
en
histoire de forcer à sortir du dossier courant et re-rentrer dedans, mais j'ai toujours l'erreur et surtout l'erreur est :
La modification de la ligne 21 n’apparaît pas ???? j'ai vérifié il n'y a pas un qetapp.h qui traîne ailleurs.
Du coup je passe le sujet en résolut car en modifiant l'include du fichier configpages.cpp ça marche et surtout ça corrige une vrai erreur dans les sources.
Mais il reste beaucoup de questions en suspend car dans ce même fichier configpages.cpp je me suis rendu compte que le chemin de plusieurs autres include sont faux, pour autant ça compil sans broncher, et de plus pourquoi ça compil avec QtCreator sur ma session, sur une autre session de mon pc, une de mes vm ubuntu, ainsi que d'autre pc (jamais eu cette remonté par nos packager).
Bref je vais modifier tous les includes concerné dans le fichier.
Si des fois vous avez des réponses à mes question je suis très interressé.
Merci.
Dévellopeur QElectroTech
[^] # Re: qmake
Posté par scorpio810 (site web personnel) . Évalué à 1. Dernière modification le 05 février 2022 à 12:03.
Te faudrait examiner les fichiers Makefile et Makefile.Release générés par l'appel qmake ..
# des idées
Posté par NeoX . Évalué à 4.
ne devrait-il pas etre
le make doit savoir ou ranger ce qu'il vient de calculer éventuellement dans le dossier build si nécessaire
[^] # Re: des idées
Posté par scorpio810 (site web personnel) . Évalué à 1.
Justement
cd build
qmake ../qelectrotech.pro
Permet de mettre les Makefile etc dans le dossier build, et ainsi éviter de pourrir le dossier projet avec les appels qmake && make.
[^] # Re: des idées
Posté par joshua (site web personnel) . Évalué à 1.
En fait mon script faisait ça avant d'avoir ce fameux problème, avant de poster sur le forum j'en avais parlé à scoprio810 qui m'avais conseillé de faire un dossier build.
Il faudrait que je refasse la manip et voir le contenu des makefile.
Dévellopeur QElectroTech
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.