zoukankan      html  css  js  c++  java
  • QT 环境安装和跨平台编译那些事

     QT源码和SDK下载

    http://download.qt.io

    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 Kits10Debuggersx64(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

     生产界面源码 uic.exe widget.ui –o ui_widget.h

     生产信号槽代码 moc.exe widget.h moc_widget.cpp

    二 手动创建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文件下 库引用和库路径指定。

    语法: LIBS += -L”../../lib” –lopencv_world320 类似于链接库

    虽然Windows和linux下库的名字稍有区别

    linux下 libopencv_world320.so

    windows下 opencv_world320.lib

    但是QT会自动帮我们对应不同的平台。

    pro文件下指定运行目录

    DESTDIR  +=  ../../bin

    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)可以打印出当前的编译环境。

    我们可以查看

    QT5.13.0msvc2017mkspecs文件下的平台。

     最后附上一个pro文件

    #指定源码
    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
  • 相关阅读:
    IDEA使用笔记
    面试题整理
    java中的hashCode()方法
    动态规划算法实现部分——0/1背包问题
    算法课堂笔记6—近似算法
    Photoshop CC 2015
    unity学习笔记1--Space Shooter
    转载---sql之left join、right join、inner join的区别
    java连接Fastdfs图片服务器上传失败的解决方法
    Eclipse使用笔记
  • 原文地址:https://www.cnblogs.com/merlinzjl/p/11374811.html
Copyright © 2011-2022 走看看