我正在尝试在我的 win7 32 位上结合 Code::Blocks IDE 和 Qt 5.1.1。在 CB 中,我使用支持 C++0x 的 MinGW 的 g++ 编译器。
我下载了“qt-windows-opensource-5.1.1-mingw48_opengl-x86-offline.exe”并安装在“D:\Qt-library\5.1.1\mingw48_32\”。
然后在 CB 中,我在 Tools->Configure tools->add 中添加了三个名为“qmake -project”、“qmake”和“make”的工具。
“qmake -project” 可执行文件“D:\Qt-library\5.1.1\mingw48_32\bin\qmake.exe”,参数:“-project -platform win32-g++”
“qmake” 可执行文件与“qmake -project”相同",无参数;
“make”与可执行文件“D:\Qt-library\Tools\mingw48_32\bin\mingw32-make.exe”,无参数
工作目录全部设置为“${PROJECT_DIR}”
然后我单击项目-> 属性,选择“这是一个自定义 Makefile”
然后我在上面创建的工具菜单中单击“qmake -project”菜单项,qmake 生成了一个 .pro 文件。
因为我用
#include <QApplication>
代替
#include <QtGui/QApplication>
在 main.cpp 文件中,所以我在 .pro 文件中添加了“QT += 小部件”。
然后点击工具菜单中的“qmake”,生成makefile。如果我直接make,是不会编译的,因为它不支持一些C++11的语法,
所以我编辑了Makefile.Debug和makefile.Release,看起来是这样的:
CC = gcc
CXX = g++
DEFINES = -DUNICODE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN
CFLAGS = -pipe -fno-keep-inline-dllexport -O2 -Wall -Wextra $(DEFINES)
CXXFLAGS = -pipe -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES)
我在 CXXFLAGS 行添加了 -std=c++0x,所以它变成了
CXXFLAGS = -pipe -std=c++0x -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES)
(如果我使用 -std=c++11,它将不适用于我的 MinGW 版本)
然后在工具菜单中点击“make”,我得到两个错误:
我不知道那到底是什么,但我知道我如何将 main 函数从
int main(int argc, char** argv)
to修改为int qMain(int argc, char** argv)
. 然后再次make,两个qMain错误消失了,但我得到了这个:
而现在,我什么也没做,再做一次,那个错误消失了!!!但是生成的 .exe 文件不会做任何事情,无论是双击还是在命令行中运行,都不会发生任何事情(顺便说一下,虽然我包含了,但我没有编写任何 Qt 代码)如果我删除
#include <QApplication>
并以正常方式构建项目(取消“这是一个自定义的 Makefile”并直接构建),我的程序运行良好。
还有一个很奇怪的地方,我在.pro文件中添加了CONFIG += debug
,CONFIG -= release
qmake会同时生成Makefile.Debug和Makefile.Release(无论CONFIG或者debug和release都是大写还是小写),但是生成的.o文件和.exe文件都是在发布目录中,没有调试文件,这是为什么?
有人有什么想法吗?我会非常感谢你的建议。