使用g++命令生成Qt程序
上节我们给出了第一段 Qt 代码,它看起来非常简单,但是该如何生成 exe 程序,看一下实际的运行效果呢?
最简陋最原始的办法是使用 g++ 命令,这样做虽然繁琐,但是能够了解 Qt 程序的编译细节。更人性化的办法是使用 Qt Creator 集成开发环境,它把所有细节都配置好了,我们只需要点一下鼠标就能看到运行效果。
本节只演示 g++ 命令的使用,下节再演示 Qt Creator 的使用。
上节我们给出的代码是:
我们需要使用 Qt 命令行工具,而不是 Windows 自带的命令行工具;Qt 命令行工具已经为我们配置好了 Qt 环境,编译和运行 Qt 程序非常方便。在开始菜单中可以找到 Qt 命令行工具:
图1:Qt 命令行工具
使用 cd 命令进入 main.cpp 所在文件夹:
上述命令涵盖了编译和链接的全过程,会直接生成 main.exe。生成之后输入 main.exe 就可以运行该程序了。
图2:编译、连接并运行 Qt 程序
最后还需要补充两点:
1) main.exe 是使用动态链接的,由于 Qt 命令行工具已经配置好了依赖库路径,所以可以在 Qt 命令行工具里运行。但是不能直接双击 helloqt.exe 运行,会提示缺少依赖的 dll 动态库,其依赖的动态库都位于 D:\Qt\5.9\mingw53_32\bin 文件夹里。一般 Qt 程序在 Windows 系统里运行所依赖的动态库比较多,以后会讲 Qt 程序的静态链接发布方式,在讲 Qt 静态库之前大家不要纠结这些动态库的事,都在 Qt 命令行工具里运行程序就行了。
2) 对于新的 Qt 5.7.0 以上版本,都必须使用 C++11 选项来编译,g++的 C++11 选项是
最简陋最原始的办法是使用 g++ 命令,这样做虽然繁琐,但是能够了解 Qt 程序的编译细节。更人性化的办法是使用 Qt Creator 集成开发环境,它把所有细节都配置好了,我们只需要点一下鼠标就能看到运行效果。
本节只演示 g++ 命令的使用,下节再演示 Qt Creator 的使用。
上节我们给出的代码是:
#include <QtWidgets/QApplication> #include <QtWidgets/QMainWindow> #include <QtWidgets/QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow w; w.setWindowTitle("Widgets演示"); //设置标题 w.resize(300, 140); //设置客户区大小 QLabel label("新宝库", &w); label.setGeometry(100, 50, 160, 30); w.show(); return app.exec(); }将代码保存到 main.cpp 源文件,并放到 D:\QtDemo 目录(你也可以使用其它名字,放到其它目录)。
我们需要使用 Qt 命令行工具,而不是 Windows 自带的命令行工具;Qt 命令行工具已经为我们配置好了 Qt 环境,编译和运行 Qt 程序非常方便。在开始菜单中可以找到 Qt 命令行工具:
图1:Qt 命令行工具
使用 cd 命令进入 main.cpp 所在文件夹:
cd /d D:\QtDemo
然后执行如下命令就可以编译并连接生成 main.exe 程序:g++ main.cpp -std=c++0x -I"D:\Qt\5.9\mingw53_32\include" -L"D:\Qt\5.9\mingw53_32\lib" -lQt5Core -lQt5Gui -lQt5Widgets -o main
对 g++ 命令的几点说明:- main.cpp 是源码文件;
- -std=c++0x 表示启用 C++11 标准;
-
-I"D:\Qt\5.9\mingw53_32\include" 是指加入包含文件的路径(
-I
是大写的 i,即 IncludePath 首字母),该 include 文件夹就是 Qt 库的头文件位置; -
-L"C:\Qt\Qt5.7.0\5.7\mingw53_32\lib" 则指定了链接时需要的 Qt 库文件所在位置(
-L
是 LibraryPath 首字母); -
-lQt5Core 是指链接到 libQt5Core.a 库文件(
-l
是 link 链接的首字母,目标程序链接 libQt5Core.a 库文件后运行时需要 Qt5Core.dll),这是 Qt 的核心库,所有 Qt 程序都要用到它; - -lQt5Gui 是指链接到 libQt5Gui.a(运行时对应 Qt5Gui.dll),这是负责 Qt 程序底层绘制图形界面的库;
- -lQt5Widgets 是指链接到 libQt5Widgets.a(运行时对应 Qt5Widgets.dll),是包含几乎所有 Qt 图形控件和窗口的库;
- 最后的 -o main 是指生成的目标程序名字为 main(默认扩展名 .exe)。
上述命令涵盖了编译和链接的全过程,会直接生成 main.exe。生成之后输入 main.exe 就可以运行该程序了。
图2:编译、连接并运行 Qt 程序
最后还需要补充两点:
1) main.exe 是使用动态链接的,由于 Qt 命令行工具已经配置好了依赖库路径,所以可以在 Qt 命令行工具里运行。但是不能直接双击 helloqt.exe 运行,会提示缺少依赖的 dll 动态库,其依赖的动态库都位于 D:\Qt\5.9\mingw53_32\bin 文件夹里。一般 Qt 程序在 Windows 系统里运行所依赖的动态库比较多,以后会讲 Qt 程序的静态链接发布方式,在讲 Qt 静态库之前大家不要纠结这些动态库的事,都在 Qt 命令行工具里运行程序就行了。
2) 对于新的 Qt 5.7.0 以上版本,都必须使用 C++11 选项来编译,g++的 C++11 选项是
-std=c++0x
(最新的 VS 编译器默认开启 C++11 支持,不需要这个选项),因此对于最新的 Qt 开发环境,本教程涉及到 Qt 程序手动用 g++ 编译的都要带上-std=c++0x
选项。所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算