目录

qmake的作用

简单的小例子

跨平台的例子


qmake的作用

1.生成Makefile文件;
2.生成moc和uic文件;
3.用vs打开Qt时无需要改变pro文件就能能够生成项目;

在Linux中qmake的主要目的是简化程序员编写Makefile;

简单的小例子

手写一个简单的pro文件,用再用qmake下;

首先写一个小例子:

包含4个文件:

hello.h、hello.cpp、main.cpp、hello.pro

源码如下:

hello.h

#include <iostream>
using namespace std;class Hello{
public:Hello();void print();
};

hello.cpp

#include "hello.h"Hello::Hello(){cout << "Hello construction called!" << endl;
} void Hello::print(){cout << "Hello::print called!" << endl;
}

main.cpp

#include "hello.h"int main(){Hello *hello = new Hello;hello->print();delete hello;return 0;
}

hello.pro

TARGET = helloworldCONFIG += debugHEADERS += hello.hSOURCES += hello.cpp \main.cpp

TARGET一般与pro文件同名,但后缀名应平台而异,如exe是Windows平台上的,无后缀是Unix上的,如果想设置一个其他的名字,可以在此设置其他名称;

使用这条命令生成Makefile
qmake -o Makefile hello.pro

Linux的操作如下图所示:

随后使用make即可
在VS中想上次vc的文件要使用下面这条命令:
qmake -tp vc hello.pro -spec win32-msvc2012

Windows的操作如下图:

设置好,vs,如果没输出,注意设置控制台输入,如下图所示:

运行截图如下:

跨平台的例子

存在下面几个文件:

hello.cpp、hello.h、hellounix.cpp、hellounix.h、hellowin.cpp、hellowin.h、main.cpp、hello.pro

具体内容如下:

hello.h

#include <iostream>
using namespace std;class Hello{
public:Hello();void print();
};

hello.cpp

#include "hello.h"Hello::Hello(){cout << "Hello construction called!" << endl;
} void Hello::print(){cout << "Hello::print called!" << endl;
}

hellounix.h

#include <iostream>
using namespace std;class UnixHello{
public:UnixHello();void print();
};

hellounix.cpp

#include "hellounix.h"UnixHello::UnixHello(){cout << "UnixHello construction called!" << endl;
}void UnixHello::print(){cout << "UnixHello construction called!" << endl;
}

hellowin.h

#include <iostream>
using namespace std;class WinHello{
public:WinHello();void print();
};

hellowin.cpp

#include "hellowin.h"WinHello::WinHello(){cout << "WinHello contraction is called!" << endl;
}void WinHello::print(){cout << "WinHello print() called!" << endl;
}

main.cpp

#include "hello.h"
#include <QApplication>#ifdef Q_OS_WIN32
#include "hellowin.h"
#else
#include "hellounix.h"
#endifint main(){Hello *hello = new Hello;hello->print();delete hello;#ifdef Q_OS_WIN32WinHello *winHello = new WinHello;winHello->print();
#elseUnixHello *unixHello = new UnixHello;unixHello->print();
#endifreturn 0;
}

hello.pro

TARGET = helloworldCONFIG += debugHEADERS += hello.hSOURCES += hello.cpp \main.cppwin32 {HEADERS += hellowin.hSOURCES += hellowin.cpp
}
unix {HEADERS += hellounix.hSOURCES += hellounix.cpp
}

在Linux上运行截图如下:

在Windows上运行截图如下:

如果想调试程序可以使用CONFIG这个变量,标记程序为debug版本
如下所示:

源码如下:

  CONFIG += debugHEADERS += hello.hSOURCES += hello.cppSOURCES += main.cpp

如果想调试程序可以使用CONFIG这个变量,标记程序为debug版本
如下所示:

  win32 {SOURCES += hellowin.cpp}

使用win32与unix来决定跨平台的特性【前提是各个平台的代码分离】
如下所示:

  CONFIG += debugHEADERS += hello.hSOURCES += hello.cppSOURCES += main.cppwin32 {SOURCES += hellowin.cpp}unix {SOURCES += hellounix.cpp}

exists命令,当缺少文件的时候会停止qmake

  win32 {debug {CONFIG += console}}

后面这个是在Windows上,想调出控制台的时候(qDebug能打印),需要做的事情

Qt文档阅读笔记-qmake入门指南相关推荐

  1. Qt文档阅读笔记-共享库的创建与调用

    使用共享库的符号 这个符号可以作用在变量.类.函数中,并且这些都可以被调用端使用. 在编译共享库中,需要使用export符号.在使用端调用的时候使用import符号. 这里是本人从文档中记录的笔记,大 ...

  2. Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图

    Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图 QHeightMapSurfaceDataProxy:是Q3DSurface的一个基本代理类. 他是专门加载高度图. 高度图是没有X, ...

  3. Qt文档阅读笔记-Rotations Example相关

    Rotations Example文档阅读笔记 使用这种方式,对y轴和z轴进行旋转. QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0 ...

  4. Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中)

    moc(Meta-Object Compiler):用于处理Qt中关于C++的扩展. moc工具读取C++头文件,看看这个头文件里面的类是不是包含Q_OBJECT宏,它会将这个头文件,转换为带有met ...

  5. Qt文档阅读笔记-QWebEngineView及QML WebEngineView

    这里主要是最近有给Java Web项目及Qt项目需要混合,自己搞的QtWebEngine没有问题,而用了项目里面的,就有问题,在此阅读下官方资料,看看能不能解决这样莫名其妙的问题,在此记录下本次的阅读 ...

  6. Qt文档阅读笔记-Fortune Client Example实例解析

    目录 官方解析 实例代码 博主增加解析 官方解析 Fortune Client Example 以使用QTcpSocket为例子,服务端可以配合Fortune Server或Threaded Fort ...

  7. Qt文档阅读笔记-对Style Plugin Example实例的解析

    目录 前言 Style Plugin Example SimpleStylePlugin Class 定义 SimpleStylePlugin Class 实现 main()函数 The Simple ...

  8. Qt文档阅读笔记-QSet官方解析及实例

    目录 官方解析 博主栗子 官方解析 QSet类是一个模板类,他是一个哈希表集合. QSet<T>是Qt的一个普通容器类.QSet存储的值是不指明顺序的,QSet对这些值提供了快速检索的功能 ...

  9. Qt文档阅读笔记-QML Canvas的官方解析及实例

    目录 官方解析 博主例子 官方解析 Canvas可以用于画直线或曲线,简单或复杂的形状,图形,图片,并且他能加文字,颜色,阴影,和颜色梯度,和其他的装饰,可以进行低像素操作.Canvas可以保存成图像 ...

最新文章

  1. Cocoa原理指南-学习和实践1
  2. TensorFlow 笔记2--MNIST手写数字分类
  3. MEF学习笔记(6):出口和元数据
  4. ArrayList方法源码
  5. 文献学习(part34)
  6. 《编写高质量代码:改善c程序代码的125个建议》——建议14-2:在右移中合理地选择0或符号位来填充空出的位...
  7. Trie树kmpAC自动机后缀数组Manacher
  8. 网站操作系统HttpOS2.2安装图解教程
  9. Cause: java.sql.SQLException: Connection is read-only. Queries leading to data使用MySQL的时候遇到的问题,后续继续解决
  10. 双线性变换(Tustin transform/bilinear transformation)
  11. git clone 码云仓库项目报错fatal: Authentication failed for ‘https://gitee.com/...‘
  12. debian编译内核2.6.16-1
  13. 这个夏天,飞到北纬18°去玩海——带着小样儿去三亚(二)
  14. 解释缩写词在html中的标记写法是,abbr:HTML5中缩略词标记的重要作用
  15. 中国互联网二十年回忆
  16. 支持10K高清视频是HDMI 2.1有什么特点?
  17. 生死看淡,不服就GAN(九)----英伟达力作PGGAN实战,生成高清图片
  18. JS中如何让某个动作延迟几秒执行(☆)
  19. 字节跳动,正在动摇腾讯的根基
  20. 内存读数据和磁盘读数据的区别

热门文章

  1. oracle 10g rman catalog数据库版本问题
  2. Js中Date的应用
  3. 论优秀的码农,学会这5点!
  4. 小证明题 编译原理--题目原型:
  5. 朋友写的一个中国象棋游戏,JAVA代码
  6. 即时通讯作为互联网最普及的基础服务之一
  7. 如今编程成为了一个越来越重要的「技能」,如何自学编程我来教你
  8. ecs 对比 本地服务器_阿里云服务器双十一活动福利
  9. ROS----龟界三角恋
  10. 无监督学习 | KMeans与KMeans++原理