繁体   English   中英

Code :: Blocks与命令行(Qt)不一致的预构建选项

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

我正在尝试使用Code :: Blocks编译一个简单的Qt程序。 我使用的是Qt的构建系统,因此不是将Code :: Blocks进行编译,而是将Code :: Blocks的构建目标类型设置为“仅命令”,并且使用了pre / post构建步骤选项。 我的“预构建步骤”的内容如下:

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

当我在Code :: Blocks中进行编译时,出现以下错误:

c:\QtSDK\Desktop\Qt\4.8.1\mingw\lib/libqtmaind.a(qtmain_win.o): In function `WinMain@16':
c:\iwmake\build_mingw_opensource\src\winmain/qtmain_win.cpp:93: undefined reference to `_Unwind_Resume'
c:\iwmake\build_mingw_opensource\src\winmain/qtmain_win.cpp:135: undefined reference to `_Unwind_Resume'
c:\QtSDK\Desktop\Qt\4.8.1\mingw\lib/libqtmaind.a(qtmain_win.o):c:\iwmake\build_mingw_opensource\src\winmain/../../include/QtCore/../../src/corelib/tools/qvector.h:512: undefined reference to `_Unwind_Resume'
c:\QtSDK\Desktop\Qt\4.8.1\mingw\lib/libqtmaind.a(qtmain_win.o):c:\iwmake\build_mingw_opensource\src\winmain/../../include/QtCore/../../src/corelib/tools/qvector.h:513: undefined reference to `_Unwind_Resume'
c:\QtSDK\Desktop\Qt\4.8.1\mingw\lib/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: *** [debug\GUI.exe] Error 1

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

除了Code :: Blocks的错误外,Code :: Blocks和命令行的生成日志都完全相同(我检查过)。

似乎qmake和makefile与此无关,或者至少在makefile不更改时发生以上情况。

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

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

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

Code :: Blocks使用自己的GCC版本,而从命令行进行编译则使用Qt的版本。 似乎我对Makefile的工作原理有基本的误解。 我认为自从我调用Qt的MinGW以来,它始终会使用Qt的MinGW编译器。 我猜不会。

在将Code :: Blocks的编译器更改为Qt的GCC(设置->编译器和调试器->工具链可执行文件)后,它运行良好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM