使用 gcc 4.6 在 mingw 上编译 qt 4.7.3
我决定开始开发一个新的 C++ 项目,并希望使用最新版本的 Qt 框架,即 4.7.3。我还决定使用[此处] (http://www.equation.com/servlet/equation.cmd?fa=fortran) 找到的 gcc 4.6 。编译器似乎使用新的 c++0x 标准来编译简单的 c++ 文件。
我遇到的问题是,我似乎无法使用 gcc 4.6 在 MinGW 上编译 Qt 4.7.3。我不断收到以下错误:
cd src\corelib\ && mingw32-make -f Makefile
mingw32-make[1]: Entering directory `D:/__dev/Qt/4.7.3/src/corelib'
mingw32-make -f Makefile.Debug all
mingw32-make[2]: Entering directory `D:/__dev/Qt/4.7.3/src/corelib'
D:\__dev\Qt\4.7.3\bin\moc.exe -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_N
AMESPACE -DQT_MAKEDLL -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_FAST_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -D_USE_MATH
_DEFINES -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_DLL -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -
DQT_HAVE_SSE2 -I"..\..\include" -I"..\..\include\QtCore" -I"tmp\rcc\debug_shared" -I"tmp" -I"global" -I"..\..\tools\shared" -I"..\
3rdparty\zlib" -I"..\3rdparty\harfbuzz\src" -I"..\3rdparty\md5" -I"..\3rdparty\md4" -I"..\..\include\ActiveQt" -I"tmp\moc\debug_sh
ared" -I"..\..\mkspecs\win32-g++" -D__GNUC__ -DWIN32 animation\qabstractanimation.h -o tmp\moc\debug_shared\moc_qabstractanimation
.cpp
g++ -c -include tmp\obj\debug_shared\qt_pch.h -g -Wall -frtti -fexceptions -mthreads -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQ
T_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_MAKEDLL -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_FAS
T_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -D_USE_MATH_DEFINES -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_DLL -DQT_HA
VE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -I"..\..\include" -I"..\..\include\QtCore" -I"tmp\rcc\debug_s
hared" -I"tmp" -I"global" -I"..\..\tools\shared" -I"..\3rdparty\zlib" -I"..\3rdparty\harfbuzz\src" -I"..\3rdparty\md5" -I"..\3rdpa
rty\md4" -I"..\..\include\ActiveQt" -I"tmp\moc\debug_shared" -I"..\..\mkspecs\win32-g++" -o tmp\obj\debug_shared\qabstractanimatio
n.o animation\qabstractanimation.cpp
animation\qabstractanimation.cpp:896:38: fatal error: moc_qabstractanimation.cpp: No such file or directory
compilation terminated.
mingw32-make[2]: *** [tmp/obj/debug_shared/qabstractanimation.o] Error 1
mingw32-make[2]: Leaving directory `D:/__dev/Qt/4.7.3/src/corelib'
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory `D:/__dev/Qt/4.7.3/src/corelib'
mingw32-make: *** [sub-corelib-make_default-ordered] Error 2
删除该行也没有帮助,因为它会在另一个文件上失败。现在我有点卡住了,因为我不知道为什么找不到该文件。
我删除了我拥有的源代码,并安装了 qt 4.7.3 的 Windows 版本,但我无法使用 gcc 4.6 的程序进行编译,这是关于未定义的方法的一些事情(可能是因为库是用 gcc 4.4 编译的,所以我思考)。所以我决定用gcc 4.6重建qt。现在我收到以下错误:
g++ -c -include tmp\obj\debug_shared\qt_pch.h -g -Wall -frtti -fexceptions -mthreads -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQ
T_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_MAKEDLL -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_FAS
T_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -D_USE_MATH_DEFINES -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_DLL -DQT_HA
VE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -I"..\..\include" -I"..\..\include\QtCore" -I"tmp\rcc\debug_s
hared" -I"tmp" -I"global" -I"..\..\tools\shared" -I"..\3rdparty\zlib" -I"..\3rdparty\harfbuzz\src" -I"..\3rdparty\md5" -I"..\3rdpa
rty\md4" -I"..\..\include\ActiveQt" -I"tmp\moc\debug_shared" -I"..\..\mkspecs\win32-g++" -o tmp\obj\debug_shared\moc_qnamespace.o
tmp\moc\debug_shared\moc_qnamespace.cpp
tmp\moc\debug_shared\moc_qnamespace.cpp:196:16: error: 'WMouseNoMask' is not a member of 'Qt'
tmp\moc\debug_shared\moc_qnamespace.cpp:197:16: error: 'WDestructiveClose' is not a member of 'Qt'
[the list continues]
tmp\moc\debug_shared\moc_qnamespace.cpp:1022:17: error: 'PaletteLinkVisited' is not a member of 'Qt'
tmp\moc\debug_shared\moc_qnamespace.cpp:1023:17: error: 'X11ParentRelative' is not a member of 'Qt'
make[2]: *** [tmp/obj/debug_shared/moc_qnamespace.o] Error 1
make[2]: Leaving directory `D:/__dev/Qt/4.7.3/src/corelib'
make[1]: *** [debug-all] Error 2
make[1]: Leaving directory `D:/__dev/Qt/4.7.3/src/corelib'
make: *** [sub-corelib-make_default-ordered] Error 2
I decided to start working on a new C++ project and wanted to use the latest version of the Qt framework, which is 4.7.3. I also decided to use gcc 4.6 found [here] (http://www.equation.com/servlet/equation.cmd?fa=fortran) . The compiler seems to compile simple c++ files using the new c++0x standard.
The problem I'm having, is that I can't seem to be able to compile Qt 4.7.3 on MinGW with gcc 4.6. I keep getting the following error:
cd src\corelib\ && mingw32-make -f Makefile
mingw32-make[1]: Entering directory `D:/__dev/Qt/4.7.3/src/corelib'
mingw32-make -f Makefile.Debug all
mingw32-make[2]: Entering directory `D:/__dev/Qt/4.7.3/src/corelib'
D:\__dev\Qt\4.7.3\bin\moc.exe -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_N
AMESPACE -DQT_MAKEDLL -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_FAST_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -D_USE_MATH
_DEFINES -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_DLL -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -
DQT_HAVE_SSE2 -I"..\..\include" -I"..\..\include\QtCore" -I"tmp\rcc\debug_shared" -I"tmp" -I"global" -I"..\..\tools\shared" -I"..\
3rdparty\zlib" -I"..\3rdparty\harfbuzz\src" -I"..\3rdparty\md5" -I"..\3rdparty\md4" -I"..\..\include\ActiveQt" -I"tmp\moc\debug_sh
ared" -I"..\..\mkspecs\win32-g++" -D__GNUC__ -DWIN32 animation\qabstractanimation.h -o tmp\moc\debug_shared\moc_qabstractanimation
.cpp
g++ -c -include tmp\obj\debug_shared\qt_pch.h -g -Wall -frtti -fexceptions -mthreads -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQ
T_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_MAKEDLL -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_FAS
T_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -D_USE_MATH_DEFINES -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_DLL -DQT_HA
VE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -I"..\..\include" -I"..\..\include\QtCore" -I"tmp\rcc\debug_s
hared" -I"tmp" -I"global" -I"..\..\tools\shared" -I"..\3rdparty\zlib" -I"..\3rdparty\harfbuzz\src" -I"..\3rdparty\md5" -I"..\3rdpa
rty\md4" -I"..\..\include\ActiveQt" -I"tmp\moc\debug_shared" -I"..\..\mkspecs\win32-g++" -o tmp\obj\debug_shared\qabstractanimatio
n.o animation\qabstractanimation.cpp
animation\qabstractanimation.cpp:896:38: fatal error: moc_qabstractanimation.cpp: No such file or directory
compilation terminated.
mingw32-make[2]: *** [tmp/obj/debug_shared/qabstractanimation.o] Error 1
mingw32-make[2]: Leaving directory `D:/__dev/Qt/4.7.3/src/corelib'
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory `D:/__dev/Qt/4.7.3/src/corelib'
mingw32-make: *** [sub-corelib-make_default-ordered] Error 2
Removing the line also doesn't help, cause it'll fail at another file. Now I'm kinda stuck though, because I don't know why it can't find the file.
I removed the source code i had, and installed the windows version of qt 4.7.3, but i can't compile with a program with gcc 4.6, something about undefined methods (probably because the libs are compiled with gcc 4.4, or so i think). So i decided to rebuild qt it with gcc 4.6. Now I get the following errors:
g++ -c -include tmp\obj\debug_shared\qt_pch.h -g -Wall -frtti -fexceptions -mthreads -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQ
T_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_MAKEDLL -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_FAS
T_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -D_USE_MATH_DEFINES -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_DLL -DQT_HA
VE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -I"..\..\include" -I"..\..\include\QtCore" -I"tmp\rcc\debug_s
hared" -I"tmp" -I"global" -I"..\..\tools\shared" -I"..\3rdparty\zlib" -I"..\3rdparty\harfbuzz\src" -I"..\3rdparty\md5" -I"..\3rdpa
rty\md4" -I"..\..\include\ActiveQt" -I"tmp\moc\debug_shared" -I"..\..\mkspecs\win32-g++" -o tmp\obj\debug_shared\moc_qnamespace.o
tmp\moc\debug_shared\moc_qnamespace.cpp
tmp\moc\debug_shared\moc_qnamespace.cpp:196:16: error: 'WMouseNoMask' is not a member of 'Qt'
tmp\moc\debug_shared\moc_qnamespace.cpp:197:16: error: 'WDestructiveClose' is not a member of 'Qt'
[the list continues]
tmp\moc\debug_shared\moc_qnamespace.cpp:1022:17: error: 'PaletteLinkVisited' is not a member of 'Qt'
tmp\moc\debug_shared\moc_qnamespace.cpp:1023:17: error: 'X11ParentRelative' is not a member of 'Qt'
make[2]: *** [tmp/obj/debug_shared/moc_qnamespace.o] Error 1
make[2]: Leaving directory `D:/__dev/Qt/4.7.3/src/corelib'
make[1]: *** [debug-all] Error 2
make[1]: Leaving directory `D:/__dev/Qt/4.7.3/src/corelib'
make: *** [sub-corelib-make_default-ordered] Error 2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
qabstractanimation 声明中是否有 QOBJECT 宏? Moc.exe 可能不会生成文件 moc_qabstractanimation.cpp,因为它看不到宏。
Does qabstractanimation have the QOBJECT macro in the declaration? Moc.exe may not be generating the file moc_qabstractanimation.cpp because it doesn't see the macro.