Qt文档阅读笔记-qmake入门指南
目录
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入门指南相关推荐
- Qt文档阅读笔记-共享库的创建与调用
使用共享库的符号 这个符号可以作用在变量.类.函数中,并且这些都可以被调用端使用. 在编译共享库中,需要使用export符号.在使用端调用的时候使用import符号. 这里是本人从文档中记录的笔记,大 ...
- Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图
Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图 QHeightMapSurfaceDataProxy:是Q3DSurface的一个基本代理类. 他是专门加载高度图. 高度图是没有X, ...
- Qt文档阅读笔记-Rotations Example相关
Rotations Example文档阅读笔记 使用这种方式,对y轴和z轴进行旋转. QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0 ...
- Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中)
moc(Meta-Object Compiler):用于处理Qt中关于C++的扩展. moc工具读取C++头文件,看看这个头文件里面的类是不是包含Q_OBJECT宏,它会将这个头文件,转换为带有met ...
- Qt文档阅读笔记-QWebEngineView及QML WebEngineView
这里主要是最近有给Java Web项目及Qt项目需要混合,自己搞的QtWebEngine没有问题,而用了项目里面的,就有问题,在此阅读下官方资料,看看能不能解决这样莫名其妙的问题,在此记录下本次的阅读 ...
- Qt文档阅读笔记-Fortune Client Example实例解析
目录 官方解析 实例代码 博主增加解析 官方解析 Fortune Client Example 以使用QTcpSocket为例子,服务端可以配合Fortune Server或Threaded Fort ...
- Qt文档阅读笔记-对Style Plugin Example实例的解析
目录 前言 Style Plugin Example SimpleStylePlugin Class 定义 SimpleStylePlugin Class 实现 main()函数 The Simple ...
- Qt文档阅读笔记-QSet官方解析及实例
目录 官方解析 博主栗子 官方解析 QSet类是一个模板类,他是一个哈希表集合. QSet<T>是Qt的一个普通容器类.QSet存储的值是不指明顺序的,QSet对这些值提供了快速检索的功能 ...
- Qt文档阅读笔记-QML Canvas的官方解析及实例
目录 官方解析 博主例子 官方解析 Canvas可以用于画直线或曲线,简单或复杂的形状,图形,图片,并且他能加文字,颜色,阴影,和颜色梯度,和其他的装饰,可以进行低像素操作.Canvas可以保存成图像 ...
最新文章
- Cocoa原理指南-学习和实践1
- TensorFlow 笔记2--MNIST手写数字分类
- MEF学习笔记(6):出口和元数据
- ArrayList方法源码
- 文献学习(part34)
- 《编写高质量代码:改善c程序代码的125个建议》——建议14-2:在右移中合理地选择0或符号位来填充空出的位...
- Trie树kmpAC自动机后缀数组Manacher
- 网站操作系统HttpOS2.2安装图解教程
- Cause: java.sql.SQLException: Connection is read-only. Queries leading to data使用MySQL的时候遇到的问题,后续继续解决
- 双线性变换(Tustin transform/bilinear transformation)
- git clone 码云仓库项目报错fatal: Authentication failed for ‘https://gitee.com/...‘
- debian编译内核2.6.16-1
- 这个夏天,飞到北纬18°去玩海——带着小样儿去三亚(二)
- 解释缩写词在html中的标记写法是,abbr:HTML5中缩略词标记的重要作用
- 中国互联网二十年回忆
- 支持10K高清视频是HDMI 2.1有什么特点?
- 生死看淡,不服就GAN(九)----英伟达力作PGGAN实战,生成高清图片
- JS中如何让某个动作延迟几秒执行(☆)
- 字节跳动,正在动摇腾讯的根基
- 内存读数据和磁盘读数据的区别