erreur QT en fonction emplacement fichier

erreur QT en fonction emplacement fichier

par Yanis Marcel Le Fur,
Number of replies: 4

Bonjour, j'ai un problème avec qt sur l'exercice 5. En effet quand j'essaye de build l'exercice 5 , qt me met deux erreurs:

-invalid version number in '-mmacosx-version-min='
-invalid deployement target for -stdlib=libc++ (requires OS X 10.7 or later)

et ce message dans le compilateur:

clang: error: invalid version number in '-mmacosx-version-min='

clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)

make[1]: *** [contenu.o] Error 1
make: *** [sub-general-make_first] Error 2
make: *** Waiting for unfinished jobs....
make[1]: *** No rule to make target `../general/libgeneral.a', needed by `ex_05_gl.app/Contents/MacOS/ex_05_gl'. Stop.
make[1]: *** Waiting for unfinished jobs....
make[1]: *** No rule to make target `../general/libgeneral.a', needed by `ex_05_text.app/Contents/MacOS/ex_05_text'. Stop.
make[1]: *** Waiting for unfinished jobs....
make: *** [sub-Qt_GL-make_first] Error 2
make: *** [sub-text-make_first] Error 2
09:38:25: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project ex_05 (kit: Desktop Qt 5.14.1 clang 64bit)
When executing step "Make"

Cependant, quand je lance l'exercice 5 dans mon dossier download aucune erreure ne provient et je peux lancer mon programme sans problème mais des que je le deplace des downloads il me met cette erreur

Est-ce que vous auriez une idées d'où provient ce problème?
Merci


In reply to Yanis Marcel Le Fur

Re: erreur QT en fonction emplacement fichier

par Yannis Yves Ulrich,

Bonjour, 

Je ne suis pas assistant mais j'ai eu le même pproblème et cette erreur est très spécifique et compliquée à comprendre.

Voilà ce que j'ai fait:

- Va dans le dossier 

Qt/5.14.2/clang_64/mkspecs/features/mac, qui se trouve probablement dans ton dossier home "Yanis". "Qt" est le dossier principal d'installation de Qt que tu configure au début. 

- Fait un backup du fichier "default_post.prf", qui se trouve dans ce dossier, en le copiant sur le bureau par exemple.

- Ensuite ouvre ce fichier (dans features/mac donc) et modifie deux lignes:

Elles sont les deux seules à contenir -m\$\${version_identifier}-version-min, comme ça tu peux les trouver (cmd + F). Chez moi c'étaient les numéros de ligne 194 et 221. Elles sont les suivantes:

-m\$\${version_identifier}-version-min=\$\$deployment_target

et l'autre:

version_min_flag = -m\$\${version_identifier}-version-min=\$\$deployment_target

Apparemment la variable deployment_target n'est pas définie chez moi. Ce paramètre n'ayant en fait aucune autre importance à part limiter la compatibilité avec d'autres versions de Mac OS, on peut manuellement insérer une version du système au lieu de deployment_target. Remplace donc dans les deux lignes \$\$deployment_target par la version que tu as sur ton ordi, i.e. 10.15 ou 10.14, 10.13, etc... Tu dois avoir:

-m\$\${version_identifier}-version-min=10.13

et l'autre:

version_min_flag = -m\$\${version_identifier}-version-min=10.13

Par exemple. 

Ensuite efface le dossier build que qmake crée pour le projet et rééssaie. Si ça marche pas remplace le fichier modifié par le backup sur ton bureau, comme ça aucun dégat est fait. Je n'ai d'ailleurs aucune idée pourquoi parfois ça passe et parfois pas... 

In reply to Yannis Yves Ulrich

Re: erreur QT en fonction emplacement fichier

par Yannis Yves Ulrich,

Après discussion avec encore quelques autres cas comme celui-ci par messages, trois choses importantes:

1. QtCreator utilise des fichiers du type "default_post.prf" qui contiennent un grand nombre de configurations qui sont rajoutées à la fin ("post") de la commande g++. Une de ces configurations est, sur mac, une ligne qui est censée rajouter à la fin de la commande g++ le flag suivant:

-mmacos-version-min = "votre version de macos"

Où "votre version de macos" est une variable qui devrait être définie en amont, et devrait contenir un string comme 10.13 ou 10.15. Le seul problème est qu'elle ne l'est pas, et donc il reste un flag incomplet à la compilation, car la variable "votre version de macos" reste vide. La question à un million est de savoir pourquoi elle le reste, j'en ai aucune idée. 

L'idée du fix que je propose est donc de simplement mettre une version inférieure ou égale à la votre à la place de "votre version de macos". De cette manière le flag est complet et il est possible de compiler. 

2. Qt propose plusieurs "kits" de compilation, typiquement webassembly (wasm) et Clang par exemple, mais cela dépend de l'installation. Il faut modifier le bon fichier default_post.prf, c'est à dire celui qui correspond au kit. Pour tous les trouver il suffit de lancer une recherche pour "default_post", en restreignant la recherche à votre dossier "Qt" (qui se situe probablement dans le home). j'ai mis une image en annexe si jamais. 

3. Aussi, il est important d'effacer le dossier build que qt crée à chaque modification d'un default_post, car les configurations dans un fichier default_post sont appliquées au makefile généré. 

Attachment defaultpostsearch.png
In reply to Yanis Marcel Le Fur

erreur QT en fonction emplacement fichier

par Yanis Marcel Le Fur,
Merci beaucoup pour ta reponse malheureusement j'ai la version 15.14.1 de qt et le fichier default_post.prf est totalement different et je ne retrouve pas les lignes dont tu parles