C++ 编译QTermWidget

C++ 编译QTermWidget,c++,qt,qt5,qt-creator,C++,Qt,Qt5,Qt Creator,在Cmake完成之前,我已经试着编译我已经编译/安装了我需要的东西,但是make步骤抛出了谷歌没有太大帮助的错误: [ 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

在Cmake完成之前,我已经试着编译我已经编译/安装了我需要的东西,但是make步骤抛出了谷歌没有太大帮助的错误:

[ 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
有人能解决这个问题吗

作为一个扩展,如何有效地包含一个自定义小部件,以便在QT Creator中使用?

看起来它在utmpx.h的股票版本中没有包含
ut\u name

如果您查看此版本:

他们有一个“向后兼容性黑客”:

87  /* Backwards compatibility hacks.  */
88  #define ut_name     ut_user
您可能需要升级包含该标头的库。或者在代码中插入
#define
。作为一个好的github公民,如果它起作用,你应该做一个pull请求和/或提交一个关于它的问题,这样下一个使用该库的人就不会遇到同样的问题

希望有帮助。

看起来它在utmpx.h的股票版本中没有包含
ut\u name

如果您查看此版本:

他们有一个“向后兼容性黑客”:

87  /* Backwards compatibility hacks.  */
88  #define ut_name     ut_user
您可能需要升级包含该标头的库。或者在代码中插入
#define
。作为一个好的github公民,如果它起作用,你应该做一个pull请求和/或提交一个关于它的问题,这样下一个使用该库的人就不会遇到同样的问题

希望能有所帮助。

我不知道为什么会出现问题,因为根据我检查的所有文件,所有东西都正确命名了

#define ut_user ut_name
添加到kpty.h解决了这个问题

我不知道为什么会发生这个问题,因为根据我检查的所有文件,所有东西都正确命名了


#define ut_user ut_name
添加到kpty.h解决了这个问题

你有什么版本的Qt?你的操作系统是什么?@eyllanesc操作系统是MacOSX El Capitain(我相信是10.11?),QT 5.8本项目的目标机器是什么?建议检查用于构建应用程序的GCC版本与用于系统根目录的版本是否不匹配。您有什么版本的QT以及您的操作系统是什么?@eyllanesc操作系统是Mac OSX El Capitain(我相信是10.11?),QT 5.8此项目的目标机器是什么?建议检查用于应用程序构建的GCC版本与用于sysroot.utmpx.h的版本之间是否存在不匹配。utmpx.h是只读的,即使使用sudo也是如此。我如何更新它?我甚至不知道它是哪个图书馆的一部分。感谢您迄今为止的帮助。实际上,默认的Mac utmpx.h文件有
#define ut_user ut_name
,这意味着您的路径中有另一个文件,编译器在该文件之前找到了该文件。尝试在终端上使用
locate utmpx.h
命令,然后将该路径添加到.pro文件中的include路径中。我一直在编译小部件-我没有设法使用.pro文件获取任何内容,也没有将小部件放入我的应用程序中。utmpx.h是只读的-即使使用sudo。我如何更新它?我甚至不知道它是哪个图书馆的一部分。感谢您迄今为止的帮助。实际上,默认的Mac utmpx.h文件有
#define ut_user ut_name
,这意味着您的路径中有另一个文件,编译器在该文件之前找到了该文件。尝试在终端上执行
locate utmpx.h
命令,然后将该路径添加到.pro文件中的include路径中。我一直在编译小部件-我还没有找到任何与.pro文件相关的内容,也没有将小部件放入我的应用程序中。