代码::封锁前构建选项与命令行(QT)不一致

Code::Blocks Pre-build options inconsistent with command line (Qt)

本文关键字:QT 不一致 命令行 选项 封锁 构建 代码      更新时间:2023-10-16

我正在尝试使用Code :: blocks编译一个简单的QT程序。我正在使用QT的构建系统,因此代替代码:: blocks对其进行编译,而是Code :: Blocks的构建目标类型设置为"仅命令",并且我使用的是pre/post构建步骤选项。我的"前构建步骤"的内容如下:

qmake.exe GUI.pro
C:/QtSDK/mingw/bin/mingw32-make.exe -f Makefile.Debug

当我在code ::块中编译时,我会得到以下错误:

c:QtSDKDesktopQt4.8.1mingwlib/libqtmaind.a(qtmain_win.o): In function `WinMain@16':
c:iwmakebuild_mingw_opensourcesrcwinmain/qtmain_win.cpp:93: undefined reference to `_Unwind_Resume'
c:iwmakebuild_mingw_opensourcesrcwinmain/qtmain_win.cpp:135: undefined reference to `_Unwind_Resume'
c:QtSDKDesktopQt4.8.1mingwlib/libqtmaind.a(qtmain_win.o):c:iwmakebuild_mingw_opensourcesrcwinmain/../../include/QtCore/../../src/corelib/tools/qvector.h:512: undefined reference to `_Unwind_Resume'
c:QtSDKDesktopQt4.8.1mingwlib/libqtmaind.a(qtmain_win.o):c:iwmakebuild_mingw_opensourcesrcwinmain/../../include/QtCore/../../src/corelib/tools/qvector.h:513: undefined reference to `_Unwind_Resume'
c:QtSDKDesktopQt4.8.1mingwlib/libqtmaind.a(qtmain_win.o):qtmain_win.cpp:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
mingw32-make.exe: *** [debugGUI.exe] Error 1

但是,奇怪的是,当我使用Windows命令行输入上面的两个命令时,它可以正常工作。它成功地构建了一个.EXE,该.EXE可行并显示一个简单的窗口。

两个代码:: blocks和命令行的构建日志完全相同(我检查了),除了Code :: Blocks的错误。

似乎Qmake和Makefile与此无关,或者至少在makefiles不变时发生。

我确保每次编译时都会在调试中删除.o和.exe文件。

两个代码:: blocks和cmd输出相同的4个文件(3 .o文件和1 .cpp文件),除了CMD的.EXE。但是,我注意到使用code :: blocks编译时,一个文件为262kb,通过命令行编译时263kb。

在预构建步骤中,我尝试使用命令调用CMD,并且我尝试调用批处理文件,但是出现了相同的错误。

code :: blocks使用了自己的GCC版本,而从命令行进行编译时,正在使用QT的版本。看来我对makefile的工作方式有根本的误解。我认为自从我称QT的Mingw Make Whats wall将始终使用QT的MINGW编译器。我想不是。

我更改了Code :: Blocks的编译器为QT的GCC(设置 ->编译器和调试器 ->工具链可执行文件),它工作正常。