2017-05-11 3 views
1

J'ai essayé de compiler this custom QT widget to provide a terminal that I can embed into my application. j'ai compilé/installé the build tools for the program que je avais besoin avant Cmake compléterait, mais l'étape de faire est de lancer des erreurs que Google n'a pas été trop utile sur:Compiling QTermWidget

[ 50%] Building CXX object CMakeFiles/qtermwidget5.dir/lib/kpty.cpp.o 
/Users/a7c/qtermwidget/qtermwidget-master/lib/kpty.cpp:506:26: error: no member named 'ut_name' in 'utmpx' 
     strncpy(l_struct.ut_name, user, sizeof(l_struct.ut_name)); 
       ~~~~~~~~^
/Users/a7c/qtermwidget/qtermwidget-master/lib/kpty.cpp:506:57: error: no member named 'ut_name' in 'utmpx' 
     strncpy(l_struct.ut_name, user, sizeof(l_struct.ut_name)); 
               ~~~~~~~~^
/Users/a7c/qtermwidget/qtermwidget-master/lib/kpty.cpp:617:20: error: no member named 'ut_name' in 'utmpx' 
     memset(ut->ut_name, 0, sizeof(*ut->ut_name)); 
       ~~^
/Users/a7c/qtermwidget/qtermwidget-master/lib/kpty.cpp:617:44: error: no member named 'ut_name' in 'utmpx' 
     memset(ut->ut_name, 0, sizeof(*ut->ut_name)); 
             ~~^
4 errors generated. 
make[2]: *** [CMakeFiles/qtermwidget5.dir/lib/kpty.cpp.o] Error 1 
make[1]: *** [CMakeFiles/qtermwidget5.dir/all] Error 2 
make: *** [all] Error 2 

Est-ce que quelqu'un a une solution à ce problème?

Et en tant qu'extension, comment exactement inclut-on effectivement un widget personnalisé pour être utilisable dans QT Creator?

+1

Quelle version de Qt avez-vous et quel est votre système d'exploitation? – eyllanesc

+1

@eyllanesc Le système d'exploitation est Mac OSX El Capitain (10.11 je crois?), Et QT 5.8 – MadisonCooper

+0

Quelle est la machine cible pour ce projet? –

Répondre

4

http://pubs.opengroup.org/onlinepubs/7908799/xsh/utmpx.h.html

On dirait qu'il ne comprend pas ut_name dans la version stock de utmpx.h.

Si vous regardez cette version de celui-ci:

https://code.woboq.org/kde/include/bits/utmp.h.html

Ils ont un « hack compatibilité ascendante » là-bas:

87 /* Backwards compatibility hacks. */ 
88 #define ut_name  ut_user 

Vous voudrez peut-être mettre à jour cette bibliothèque qui comprend ce entête. Ou insérez simplement #define dans votre code. Et en tant que bon citoyen github, si cela fonctionne, vous devriez faire une demande d'extraction et/ou soumettre un problème à ce sujet afin que la prochaine personne utilisant cette bibliothèque ne rencontre pas le même problème.

Espérons que cela aide.

+0

utmpx.h est en lecture seule - même avec sudo. Comment puis-je le mettre à jour? Je ne sais même pas de quelle bibliothèque il s'agit. Merci pour votre aide si loin. – MadisonCooper

+0

En fait, le fichier par défaut ut utmpx.h a '#define ut_user ut_name' – MadisonCooper

+0

Alors cela signifie que vous en avez un autre dans votre chemin que votre compilateur trouve avant celui-ci. Essayez une commande 'locate utmpx.h' sur le terminal, puis ajoutez ce chemin dans vos chemins d'inclusion dans votre fichier .pro. – phyatt

1

Je ne sais pas pourquoi le problème est arrivé, puisque selon tous les fichiers j'ai vérifié tout a été nommé correctement.

L'ajout de #define ut_user ut_name à kpty.h a résolu le problème.