QT5.13安装
windows下通常使用VS来开发,而linux下则使用OtCreator来开发。
linux,以Ubuntu为例
安装Qt前需要先安装 g++ make
sudo apt-get install libgl1-mesa-dev
安装环境准备好后直接安装 ./qt-opensource-linux-x64-5.13.0.run 即可。
注意:一般安装在/usr下,里面很多文件夹,根据文件的类型,分门别类,不是一个软件一个文件夹。以前老版本的Linux习惯放在/usr/local目录下。
部分软件放在/opt下,则是一个软件统一在一个文件夹下。/opt目录专门是用来给第三方软件放置文件的,比如一些压缩包解压的软件都放在这里。
比如“网易云音乐”就安装在/usr/lib/netease-cloud-music
比如Chrome就放在/opt/google/chrome
Windows下调试工具的安装设置(使用微软的编译器)
安装完VisualStudio2017后,接着安装win10 SDK,安装完成后,在C:\Program Files (x86)\Windows Kits\10\Debuggers\x64(x86)下有一个cdb.exe用于调试。
Windows下,为QTCreator配置时注意使用的QT支持的编译器和VS支持的编译器必须一致。这里我们使用VS2017和QT5.13。
安装完后,打开Kits界面,如下所示进行查看。编译器有可能没有配置,需要手动选择一下。
QTCreator项目配置
1 配置库和头文件
然后导入头文件和lib文件所在路径,将dll拷贝到可执行目录下。
2、VS+QT项目配置
2.1、 首先安装QT的插件,根据VS的版本安装,这里使用qt-vsaddin-msvc2017-2.3.2
2.2、打开VS后,在菜单栏中的QT VS Tools->QT Options,配置你的QT版本
一 QT程序编译经历的步骤
1 qmake编译pro生成makefile
2 jom或者make编译makefile
二 手动创建pro
windows下环境设置如下
linux下设置如下
先设置qmake的路径,然后使用qmake由testqmake.pro文件构建得到makefile文件。
然后使用make编译得到可执行文件。
三、将QtCreator创建的工程转换为VS
直接使用命令的行
使用命令行产生的代码在VS打开时,可能会出现“找不到 Windows SDK 版本8.1.请安装所需的版本的 Windows SDK 或者在项目属性页的问题解决方案”这种错误。处理方法如下所示。
或者使用插件也可以将QTCreator工程转换为VS工程。
四、pro文件下添加一个内部库
无论是通过UI,还是直接在pro文件中更改,都需要在添加之后,重新执行下qmake。
在帮助手册中找到你要使用的QT内部类,帮助手册会告诉你这个类该使用什么模块。
五、头文件引用。
对于工程来说,当前路径表示的是构建路径,即和源码同一级的文件夹下,如图是build-testqmake-Desktop_Qt_5_13_0_MSVC2017_64bit-Debug文件夹下。
$$PWD是获取当前源码路径,即在testqmake文件夹下,所以以下两个路径是相等的。
六、pro文件下 库引用和库路径指定。
虽然Windows和linux下库的名字稍有区别
linux下 libopencv_world320.so
windows下 opencv_world320.lib
但是QT会自动帮我们对应不同的平台。
pro文件下指定运行目录
pro文件下指定运行程序名字
TARGET = testq
七、QT创建一个动态库
pro文件下指定TEMPLATE = lib,如果pro文件下不指定,则默认生成应用程序。
linux下动态库是xxx.so 静态库是xxx.a
windows下动态库是xxx.dll 静态库是xxx.lib,而且动态库还包含一个标示地址的lib文件,而且,windows下还需要指定导出函数。
八、debug和release版本编译设置
CONFIG += debug_and_release(默认情况下是debug和release都有的)
除此之外,CONFIG还提供了CONFIG()函数。如下所示,如果是debug版本则输出的程序称为debug_binary,否在是release_binary。
CONFIG(debug, debug|release){//注意大括号必须紧跟着
TARGET = debug_binary
}else{
TARGET = release_binary
}
九、跨平台编译项目
针对不同平台使用不同配置
win32:INCLUDEPATH += “C:/mylibs/extra headers”
win32{
message(win32)
}
不是linux的平台
!linux{
message(win32)
}
如果是win32或linux
win32|linux{
message(win32)
}
QT内置定义了一些值 win32 linux macx unix
变量 QMAKESPEC 存储了当前的编译环境 message($$QMAKESPEC)可以打印出当前的编译环境。
我们可以查看
QT\5.13.0\msvc2017\mkspecs文件下的平台。
#指定源码
SOURCES += xsocket.cpp
#指定头文件
HEADERS += xsocket.h \
xglobal.h
#指定生成的dll的名字
TARGET = libdll
#指定生成动态库
TEMPLATE = lib
#如果要生成静态库则需要再加一个
#CONFIG += staticlib
#添加LIBDLL_LIB宏
DEFINES +=LIBDLL_LIB
#指定dll的输出路径,只针对windows
DLLDESTDIR = ../../bin
#指定输出路径,编译生成的所有文件都会往这个路径输入
DESTDIR = ../../lib