1. qmake编译程序,qmake是qt提供的一个编译打包工具。用于跨平台编译。
1.1 qmake编译Pro生成makefile
1.2 jom或者make编译makefile
1.2.1生成界面源码 xml头文件,uic.exe uic.exe widget.ui -o ui_widget.h -->>界面出错
1.2.2生产信号槽代码,moc.exe widget.h moc_widget.cpp -->>Qobject
2. 从代码到程序执行经历的步骤
2.1 预处理:每一个文件单独预处理,头文件加载和宏生成cpp
2.2 编译:单个cpp到.o或.obj,项目中多少个cpp就会生成多少个obj。两个cpp中定义了同名变量,不会出错,因为编译时是相互独立的
2.3 链接:so lib o obj res a,分静态链接(把所有函数完全复制到exe中,比较慢)和动态链接(复制的不是函数本身,而是函数的地址,快)。 把所有obj链接成一个文件。
2.4 执行:exe dll so(.h和dll和lib要一一对应)lib中定义的是函数的地址,到dll中找对应的函数
3. 手动创建pro到生成Debug exe
3.1 在纯英文路径下新建003_testqmake文件夹,创建pro文件"testqmake.pro" 和"main.cpp"和"make.bat"
testmake.pro SOURCES是导入用到的源码,多个文件源码用分割;CONFIG是配置文件
SOURCES += main.cpp
person.h
person.cpp
CONFIG += console
main.cpp
#include <iostream> using namespace std; int main() { cout<<"Hello World"<<endl; return 0; }
make.bat(统一写入的批处理文件)
call "D:VS2015ProVCvcvarsall.bat" qmake -o makefile testqmake.pro jom /f makefile.Debug pause
3.2 配置qmake和jom执行路径
VS的编译批处理文件:D:VS2015ProVCvcvarsall.bat VS安装目录下的VC文件夹的vcvarsall.bat文件
通过cmd控制台操作,不用cmd控制台操作,直接双击make.bat也可实现相同的功能
3.3 导入VS开发环境
qmake -tp vc testqmake.pro
使用vs工具导入:Qt VS Tools下Open Qt Project File(.pro)
4. qmake引入qt库创建窗口
Pro中: QT += widgets main中: #include <iostream> #include <QWidget> #include <QApplication> using namespace std; int main(int argc,char *argv[]) { QApplication a(argc,argv); QWidget w; w.show(); cout<<"Hello World" <<endl; a.exec(); //这是个循环,是阻塞式的,直到程序运行结束,才会运行到下一行 return 0; }
5. 头文件路径
INCLUDEPATH += ../..include //相对路径针对输出路径 INCLUDEPATH += $$PWD/../../include //$$PWD
include与src同级别目录,MakefFil文件所在的文件夹如果在src目录下,这样从MakeFile到src到include是/../../;如果MakeFile文件所在的文件夹与src、也就是include同目录,就是/../。
6. 库引用和库路径指定
LIBS += -L"../../lib" -lopencv_world320
linux下 libopencv_world320.so
window下 opencv_world320.lib