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:\VS2015Pro\VC\vcvarsall.bat"
qmake -o makefile testqmake.pro
jom /f makefile.Debug
pause

  3.2 配置qmake和jom执行路径

  VS的编译批处理文件:D:\VS2015Pro\VC\vcvarsall.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;
}
QT += widgets

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