【发布时间】:2025-12-03 03:45:01
【问题描述】:
我正在尝试在我的 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”相同,无参数;
带有可执行文件“D:\Qt-library\Tools\mingw48_32\bin\mingw32-make.exe”的“make”,无参数
工作目录全部设置为“${PROJECT_DIR}”
然后我点击项目->属性,选择“这是一个自定义的 Makefile”
然后我点击上面创建的工具菜单中的“qmake -project”菜单项,qmake 生成了一个 .pro 文件。
因为我用
#include <QApplication>
而不是
#include <QtGui/QApplication>
在 main.cpp 文件中,所以我在 .pro 文件中添加了“QT += widgets”。
然后点击工具菜单中的“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”,出现两个错误:
我不知道那到底是什么,但我知道我是如何修改我的主要功能的
int main(int argc, char** argv)
到int qMain(int argc, char** argv)。然后再次make,两个qMain错误消失了,但我得到了这个:
而现在,我什么都没做,再次make,那个错误消失了!!! 但是生成的 .exe 文件不会做任何事情,无论是双击还是在命令行中运行,都不会发生任何事情(顺便说一下,虽然我包含了,但我没有编写任何 Qt 代码) 如果我删除
#include <QApplication>
并以正常方式构建项目(取消“这是自定义Makefile”并直接构建),我的程序运行良好。
还有一点很奇怪,我在.pro文件中添加了CONFIG += debug和CONFIG -= release,qmake会同时生成Makefile.Debug和Makefile.Release(无论CONFIG或者debug和release都是大写还是小写),但是生成.o文件和.exe文件都在release目录下,没有debug文件,这是为什么呢?
有人有什么想法吗?非常感谢您的建议。
【问题讨论】:
标签: c++ qt ide development-environment codeblocks