最简陋最原始的办法是使用 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("C语言中文网", &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
选项。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/22437.html