精华内容
下载资源
问答
  • (一)QT安装Qt Library) step1:进入qt下载镜像...,选择合适的版本下载,我这里选择的是qt-everywhere-opensource-src-4.8.6.tar.gz step2:拷贝到自己待安装的文件夹下,解压: tar zxvf qt-everywhere-opensou

    (一)QT安装(Qt Library)

    step1:进入qt下载镜像链接http://download.qt.io/archive/qt/4.8/4.8.6/,选择合适的版本下载我这里选择的是qt-everywhere-opensource-src-4.8.6.tar.gz

    step2:拷贝到自己待安装的文件夹下,解压:


    tar zxvf qt-everywhere-opensource-src-4.8.6.tar.gz

    step3:进入解压后的目录,执行configure配置

    cd qt-everywhere-opensource-src-4.8.6/
    ./configure
    

    此处也可以加上配置前缀./configure -prefix /opt/qt-4.8.6-x11

    这样的话再后面编译过程中的文件会复制到/opt/qt-4.8.6-x11这个目录下(目录不存在会自动创建),好处是源码便于管理。

    配置过程中会有以下提示:

    Which edition of Qt do you want to use ?
    
    Type 'c' if you want to use the Commercial Edition.
    Type 'o' if you want to use the Open Source Edition.

    选择o。继续提示:

    This is the Open Source Edition.
    You are licensed to use this software under the terms of
    the Lesser GNU General Public License (LGPL) versions 2.1.
    You are also licensed to use this software under the terms of
    the GNU General Public License (GPL) versions 3.
    
    Type '3' to view the GNU General Public License version 3.
    Type 'L' to view the Lesser GNU General Public License version 2.1.
    Type 'yes' to accept this license offer.
    Type 'no' to decline this license offer.
    
    Do you accept the terms of either license?

    输入yes,回车即可。接下来就会生成makefile文件,配置过程十分钟左右。


    step4:配置完毕后执行make。

    make
    此过程较为漫长,时间长短由电脑配置决定。笔者是固态硬盘,大概运行了40多分钟。普通硬盘可能会长达几个小时。

    step5:执行sudo make install来安装。默认会安装到/usr/local/Trolltech/Qt-4.8.6目录下。若之前添加了configure参数,则会安装到qt-4.8.6-x11目录下。安装过程较短,大概几分钟。


    安装完毕后,可以执行/bin/designer,若看见qt启动,说明已经安装成功。(如下图)

    image

    qmake和designer在同一目录下(bin)。


    (二)QT creator安装

    step1:下载安装文件http://www.qt.io/download-open-source/#section-2

    首先得知道ubuntu是32位还是64位的:终端输入命令sudo uname --m,如果显示i686,即为32位操作系统,如果显示 x86_64,就是64位操作系统。也可以试一下在线安装。

    step2:下载下安装包以后,需要修改文件的权限

    终端输入命令修改文件权限: chmod u+x qt-opensource-linux-x64-5.5.1.run
    终端输入命令进行运行安装: ./qt-opensource-linux-x64-5.5.1.run

    然后会弹出一个图形安装界面,自定义安装位置,其他的选择默认的安装即可。


    step3:配置环境


    然后新建项目,测试~~

    如果出现

    No valid kits found

    参考以下链接:http://m.blog.csdn.net/a6625138/article/details/47296283


    注意:项目路径只能放在公共目录下,否则无法创建新工程,原因是权限不够,无法读写文件或文件夹。

    展开全文
  • Qt安装及调试源码

    千次阅读 2017-01-17 15:56:05
    简述在使用Qt过程中有时候需要查看源码了解Qt类库的内部实现。那源码在哪呢?...安装完之后, 打开 这个目录 E:\Qt5.5.1\5.5\Src , 我们就可以看到Qt的源码了。下图是QDialog源码所在位置。打开qd

    简述

    在使用Qt过程中有时候需要查看源码了解Qt类库的内部实现。那源码在哪呢?我安装了Qt之后怎么找不到源码呀?

    安装源码

    在安装Qt的时候有一个选项是默认不打勾的,而这个默认不安装的选项就是Source Components(源码),这里我们打上勾,然后进行安装。

    这里写图片描述


    安装完之后, 打开 这个目录 E:\Qt5.5.1\5.5\Src , 我们就可以看到Qt的源码了。

    这里写图片描述


    下图是QDialog源码所在位置。

    这里写图片描述

    打开qdialog.h文件,我们可以看到QDialog的内部声明。
    这里写图片描述


    想要看其他库的源码直接在这个E:\Qt5.5.1\5.5\Src目录下查找即可。


    调试源码

    我们既然能够查看到源码,那可不可以在调试的时候直接进入到源码中进行调试呢?

    答案是肯定的。

    在安装Qt的时候有两个版本可以进行选择:

    • MinGW 版
      使用 MinGW 作为默认编译器,MinGW 中附带了 GCC、GDB 等调试工具。所以如果安装 MinGW 版,可以使用 GDB 作为 Qt Creator 中的默认调试器;
    • MSVC 版
      使用 MSVC 作为默认编译器,不附带调试器,所以需要下载微软的CDB(Microsoft Console Debugger)调试器。(文章下方提供了下载链接)

    在我们调试源码之前,必须要确保在安装Qt的时候安装了源码。
    下面介绍一下MSVC 版本下进行调试源码。

    1、 安装Qt及源码

    这里我使用的是官网下载的 qt-opensource-windows-x86-msvc2013-5.5.1 版本。在安装的时候按照上面所叙述的勾选上源码进行安装。

    2、 安装 CDB调试器。

    在Qt安装完之后,开始安装CDB调试器。

    这里写图片描述

    3、配置QCreator

    打开QCreator,按照下图步骤进行配置。

    这里写图片描述


    这里点击添加Qt源码,选择正确的源码路径。

    这里写图片描述


    选完路径后(这里选择源码路径一定要保持源码版本与QCreator版本一致,否则调试时进入源码的位置不正确)。

    这里写图片描述


    进入到CDB Paths 选项页中,我们看到这里Qt会自动检测调试器。如果这里未检测到,重新打开QCreator即可。

    这里写图片描述 这里写图片描述

    4、开始调试

    this->setWindowFlags(Qt::FramelessWindowHint); 位置打上断点,进行调试。

    这里写图片描述


    断点停留在 this->setWindowFlags(Qt::FramelessWindowHint); 位置时按F11进行单步调试进入到源码中,我们看到这里可以直接查看源码中的变量值。

    这里写图片描述


    以上4步即介绍了如何用QCreator调试Qt源码。调试进入到源码中,我们不仅看到了内部如何来实现,同时也能查看我们设置的参数或者调用的方法是否正确,更利于我们解决问题。


    CDB调试器下载

    CDB调试器


    参考资料

    http://blog.csdn.net/liang19890820/article/details/54346241

    http://blog.csdn.net/FreeApe/article/details/52976704

    展开全文
  • QT4.8.1安装教程

    千次阅读 2017-01-12 16:01:36
    本篇博客讲述了安装qt4.8.1 的成功过程 参考资料 Ubuntu下QT安装教程 Ubuntu下安装Qt全部过程 环境: linux@ubuntu:~$ cat /proc/version Linux version 3.5.0-23-generic (buildd@akateko) (gcc version...
    本篇博客讲述了安装qt4.8.1 的成功过程

    参考资料

    Ubuntu下QT的安装教程
    Ubuntu下安装Qt全部过程

    环境:

    linux@ubuntu:~$ cat /proc/version
    Linux version 3.5.0-23-generic (buildd@akateko) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #35~precise1-Ubuntu SMP Fri Jan 25 17:15:33 UTC 2013

    前提:

    sudo apt-get install build-essential//提示该软件包已经安装,常用的编译工具
    所以包里面的工具make和g++就已经安装好了

    成功经验

    ---------------------------------------------------------------------------------------
    前面已经用命令sudo apt-get install build-essential
    安装好了g++和make工具
    这一系列步骤在/usr/local/Trolltech/Qt-4.8.1/bin下安装命令
    ---------------------------------------------------------------------------------------
    1/下载源码包qt-everywhere-opensource-src-4.8.1.tar.gz
        源码包的地址为http://download.csdn.net/detail/dcmilan/4391529,该包被作者分成了十二份,地址为第一部分的下载地址
    2/sudo apt-get install libX11-dev libXext-dev libXtst-dev 
    3/解压
    4/./configure//十几分钟
    5/make//两个小时
    6/sudo make install //几分钟
    ---------------------------------------------------------------------------------------
    配置/etc/profile
    ---------------------------------------------------------------------------------------
    打开/etc/profile,在末行添加
    export QTDIR=/usr/local/Trolltech/Qt-4.8.1   
    export PATH=$QTDIR/bin:$PATH   
    export MANPATH=$QTDIR/man:$MANPATH   
    export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH  
    ---------------------------------------------------------------------------------------
    重启/etc/profile
    ---------------------------------------------------------------------------------------
    source /etc/profile
    
    ---------------------------------------------------------------------------------------
    安装qtcreator
    ---------------------------------------------------------------------------------------
    sudo apt-get install qtcreator
    ---------------------------------------------------------------------------------------
    然后应该是配置qtcreator,但是我没配置,然后写了一个demo,能够运行,不知道为什么
    ---------------------------------------------------------------------------------------

    成功经验2

    从这里面下载的东西也能够安装成功,版本全面

    失败经验

    http://wiki.qt.io/Install_Qt_5_on_Ubuntu上,根据教程

    wget http://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-linux-x64-5.7.0.run//不成功,一直没有应答

    https://www.zhihu.com/question/27387909上,根据教程

    sudo apt-get install qt5-default qtcreator//不成功
    然后
    sudo apt-get install qtcreator //成功安装
    有建议去官网下载离线安装包,已经申请,还无回应.
    然后我我去百度云下了一个,地址为
    http://pan.baidu.com/s/1qYq9exu
    还没有装
    展开全文
  • Qt5 安装与配置, Qt应用打包和发布

    千次阅读 2019-02-03 14:35:39
    Qt5 安装与配置Qt5 安装与配置window下安装Qt5mac下安装Qt5Mac环境准备工作Mac Qt5 安装Mac下安装Homebrew工具Mac下安装Python3.6Mac下Pycharm集成PyQt5Mac Qt 环境变量配置linux下安装Qt5QT编译运行中的问题1. Qt ...

    Qt5 安装与配置

    Qt安装下载:Qt官网下载

    window下安装Qt5

    mac下安装Qt5

    Mac环境准备工作

    下载Qt5.8 for mac

    制作macOS系统安装U盘的命令:

    sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/macOS --applicationpath /Applications/Install\ macOS\ Sierra.app --nointeraction
    

    Mac Qt5 安装

    Mac下安装 Qt需先安装Xcode Qt官网

    • 方式一: 下载dmg文件手动安装
      在这里插入图片描述

    一步步按指引完成安装即可

    • 方式二:命令行安装(brew安装)

    用brew的好处是稍微省心一些,不用折腾更新什么的,万一要重装什么的也可以brew bundle dump然后在新机器上brew bundle一把了事。brew安装的时候已经安装好了Xcode Command Line Tools等,必要的话把它更新一下(App Store会自动提醒)。

    1. 安装命令:
    brew install qt
    brew cask install qt-creator
    
    
    1. 配置
      上面两条命令之间是没有关联的,后装的qt-creator不会自动检测到前面的qt(qt这个包是QT开发工具链),所以需要配置。

    首先brew info qt一下,可以看到:

    ─ brew info qt
    qt: stable 5.10.0 (bottled), HEAD [keg-only]
    Cross-platform application and UI framework
    https://www.qt.io/
    /usr/local/Cellar/qt/5.10.0 (9,351 files, 290MB)
      Poured from bottle on 2017-12-30 at 20:16:37
    From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/qt.rb
    ==> Dependencies
    Build: pkg-config ✘
    Optional: mysql ✘, postgresql ✘
    ==> Requirements
    Build: xcode ✔
    Required: macOS >= 10.8 ✔
    ==> Options
    --with-docs
        Build documentation
    --with-examples
        Build examples
    --with-mysql
        Build with mysql support
    --with-postgresql
        Build with postgresql support
    --HEAD
        Install HEAD version
    ==> Caveats
    We agreed to the Qt opensource license for you.
    If this is unacceptable you should uninstall.
    This formula is keg-only, which means it was not symlinked into /usr/local,
    because Qt 5 has CMake issues when linked.
    If you need to have this software first in your PATH run:
      echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.zshrc
    For compilers to find this software you may need to set:
        LDFLAGS:  -L/usr/local/opt/qt/lib
        CPPFLAGS: -I/usr/local/opt/qt/include
    

    显然,为了不跟系统过多耦合导致问题,qt包根本没把自己注册到系统里,也就是装完qt也不能直接在命令行qmake,而是需要/usr/local/opt/qt/bin/qmake。知道了qmake工具链的路径,就可以开始配置:

    • (1), 打开QT Creator的设置,到QtVersions,点击“添加”,在浏览窗口中按CMD+Shift+G,弹出“前往文件夹”对话框,输入/usr/local,点确定,浏览到/usr/local/opt/qt/bin/qmake,点确定。

    在这里插入图片描述
    QT Creator会自动检测到这个qt的版本。

    • (2), 此时点击刚给添加的这一行,展开下面的“详情”,可以看出,显然这套东西是Clang编译出来的:

    在这里插入图片描述

    • (3), 回到前面的“构建套件”,一般装好了之后都有一个默认的“桌面”套件了,只是没有与qt工具链关联。从下拉菜单中选择刚给新加入的qt,这里是QT 5.10.0:

    在这里插入图片描述

    大部分其他项目留默认就好,但是:
    非常重要:既然这里的qt是Clang编译出来的,那么“编译器”一栏默认的GCC当然就不合适了,必须改为Clang,参见上图。不修改的话,构建项目时会报错Project ERROR: failed to parse default search paths from compiler output.

    1. 测试

    Mac下安装Homebrew工具

    Homebrew官网
    打开终端输入命令:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    在这里插入图片描述

    在 successful 后面还有个步骤,Terminal 中运行 brew doctor,doctor 让你的系统 ready to brew。

    Mac下安装Python3.6

    命令行输入:

    brew install python3
    

    Mac下Pycharm集成PyQt5

    • PyCharm :可以简单理解为编程软件,我们要下载 Community 版本。
    • PyQt: 一个 Python 插件,也可以简单理解为一座桥,连接 Pycharm 和 Qt。
    1. 下载PyCharm Community版本:PyCharm官网下载

    在这里插入图片描述

    1. 安装PyQt5
      终端输入命令:
    brew install sip
    brew install pyqt
    

    如果成功安装 Qt5 ,那么会默认安装 PyQt5。一般来说 brew 安装完毕,系统就会自动找到 PyQt5,但如果安装路径或者环境变量有问题,系统找不到 PyQt5,那么我们在后续会介绍另一种手动的方法。

    安装 SIP

    sip-4.17
    $ python3 configure.py
    This is SIP 4.17 for Python 3.5.1 on darwin.
    The SIP code generator will be installed in
    /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/bin.
    The sip module will be installed in
    /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages.
    The sip.h header file will be installed in
    /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/include/python3.5m.
    The default directory to install .sip files in is
    /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/share/sip.
    Creating siplib/sip.h...
    Creating siplib/siplib.c...
    Creating siplib/siplib.sbf...
    Creating sipconfig.py...
    Creating top level Makefile...
    Creating sip code generator Makefile...
    Creating sip module Makefile...
    
    $ make
    cc -c -pipe -Os -w -DNDEBUG -I. -o main.o main.c
    cc -c -pipe -Os -w -DNDEBUG -I. -o transform.o transform.c
    cc -c -pipe -Os -w -DNDEBUG -I. -o gencode.o gencode.c
    cc -c -pipe -Os -w -DNDEBUG -I. -o extracts.o extracts.c
    cc -c -pipe -Os -w -DNDEBUG -I. -o export.o export.c
    cc -c -pipe -Os -w -DNDEBUG -I. -o heap.o heap.c
    cc -c -pipe -Os -w -DNDEBUG -I. -o parser.o parser.c
    cc -c -pipe -Os -w -DNDEBUG -I. -o lexer.o lexer.c
    c++ -headerpad_max_install_names -o sip main.o transform.o gencode.o extracts.o export.o heap.o parser.o lexer.o
    cc -c -pipe -fPIC -Os -w -DNDEBUG -I. -I/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/include/python3.5m -o siplib.o siplib.c
    cc -c -pipe -fPIC -Os -w -DNDEBUG -I. -I/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/include/python3.5m -o apiversions.o apiversions.c
    cc -c -pipe -fPIC -Os -w -DNDEBUG -I. -I/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/include/python3.5m -o descriptors.o descriptors.c
    cc -c -pipe -fPIC -Os -w -DNDEBUG -I. -I/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/include/python3.5m -o qtlib.o qtlib.c
    cc -c -pipe -fPIC -Os -w -DNDEBUG -I. -I/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/include/python3.5m -o threads.o threads.c
    cc -c -pipe -fPIC -Os -w -DNDEBUG -I. -I/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/include/python3.5m -o objmap.o objmap.c
    cc -c -pipe -fPIC -Os -w -DNDEBUG -I. -I/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/include/python3.5m -o voidptr.o voidptr.c
    cc -c -pipe -fPIC -Os -w -DNDEBUG -I. -I/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/include/python3.5m -o array.o array.c
    c++ -c -pipe -fPIC -Os -w -DNDEBUG -I. -I/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/include/python3.5m -o bool.o bool.cpp
    c++ -headerpad_max_install_names -bundle -undefined dynamic_lookup -o sip.so siplib.o apiversions.o descriptors.o qtlib.o threads.o objmap.o voidptr.o array.o bool.o
    
    $ sudo make install
    cp -f sip /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/bin/sip
    cp -f sip.so /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sip.so
    cp -f /Users/Gavin/Downloads/PyQt/sip-4.17/siplib/sip.h /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/include/python3.5m/sip.h
    cp -f sipconfig.py /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sipconfig.py
    cp -f /Users/Gavin/Downloads/PyQt/sip-4.17/sipdistutils.py /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sipdistutils.py
    

    最终安装在/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/bin/sip,记住这个地址,安装PyQt5会用到。

    安装 PyQt5

    PyQt-gpl-5.5.1
    $ python3 configure.py -q /Users/Gavin/Develop/Qt-5.5.1/5.5/clang_64/bin/qmake -d /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages --sip /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/bin/sip
    
    # -q 为 Qt 的 qmake 路径
    # -d 为 python3.5 的 site-packages,可通过 import site; site.getsitepackages() 来查看
    # --sip 为 sip 的路径
    
    $ make
    
    # 时间比较长
    
    $ sudo make install
    

    可能出现的错误:fatal error: ‘qgeolocation.h’ file not found,
    下载‘qgeolocation.h’放入PyQt-gpl-5.5.1/QtPositioning/即可

    测试安装

    新建一个hello.py文件

    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        w = QtWidgets.QWidget()
        w.resize(250, 150)
        w.move(300, 300)
        w.setWindowTitle('Hello PyQt')
        w.show()
        sys.exit(app.exec_())
    

    终端运行:

    python3 hello.py
    

    如果有这个窗口弹出

    在这里插入图片描述

    则说明已经成功搭建好开发环境,Ubuntu的搭建和Mac类似,Windows下载PyQt5的Binary Packages一键就可以搭建好。

    1. 将 PyQt 加入 PyCharm 中

    在这里插入图片描述
    查找安装路径的命令

    brew list #列出 brew 安装的内容;
    which XXX # 继而输入 ,列出 XXX 所在的安装路径
    

    配置

    在这里插入图片描述
    如果安装完毕,但是试运行的时候程序找不到 PyQt5,那么我们将采取如下办法手动安装:

    在这里插入图片描述

    选择“+”之后,进入如下页面,输入“PyQt5”并安装该 package。

    在这里插入图片描述

    程序会开始安装,安装成功后,程序就可以识别到 PyQt5。

    测试安装:

    检验是否能识别到 PyQt5
    写一个小函数,函数头(函数刚开始的地方)写上 from PyQt5 import QtCore, QtGui, QtWidgets 如果程序可以正常识别(不画红色下划线),那么一般就是识别成功了

    Mac Qt 环境变量配置

    1. 打开终端需要打开配置文件(注意这里不是bash_profile而是 .bash_profile
      在这里插入图片描述

    2. 如果bash_profile文件不存在,就会自动创建,然后需要输入以下内容:
      在这里插入图片描述

    3. 然后保存退出,然后输入source ~/.bash_profile使得这个文件生效。
      然后退出终端重新运行,输入
      在这里插入图片描述

    4. 测试: 输入qmake -v 可以显示版本号,则配置成功。

    5. Mac下Qt导出安装包的时候需要使用 macdeployqt ismartviewpro.app 将需要的库拷贝到沙盒中。

    linux下安装Qt5

    QT编译运行中的问题

    1. Qt Creator 里改一下 Qt Versions
    1. 偏好设置-Kits-Qt Versions-添加路径/usr/local/Cellar/qt/5.11.2/bin/qmake

    在这里插入图片描述
    2. 偏好设置-Kits-构建套件(Kit)-手动设置-桌面(默认)-Qt版本-Qt 5.11.2
    在这里插入图片描述

    2. Qt Creator 创建项目报错
    1. 报错1:
     Project ERROR: failed to parse default search paths from compiler output
    Error while parsing file /Users/hanpeizhi/Qt5/testProject01/testProject01.pro. Giving up.
    

    解决办法:
    把编译器C和C++全部改为Clang
    在这里插入图片描述

    1. 报错2:sdk问题
    Project WARNING: Qt has only been tested with version 10.13 of the platform SDK, you're using 10.13.4.
    Project WARNING: This is an unsupported configuration. You may experience build issues, and by using
    Project WARNING: the 10.13.4 SDK you are opting in to new features that Qt has not been prepared for.
    Project WARNING: Please downgrade the SDK you use to build your app to version 10.13, or configure
    Project WARNING: with CONFIG+=sdk_no_version_check when running qmake to silence this warning.
    

    解决办法:

    打开终端输入命令:

    xcode-select -p
    
    sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
    
    
    
    1. 报错3:

    QT开发的应用程序打包发布

    QT开发的程序发布的时候经常采用两种方式:

    l 静态编译,可生成单一的可执行文件。

    l 动态编译,需同时附上需要的dll文件。

    qt开发的window应用打包发布

    不管采用哪种方式,首先我们要把项目的发布做一些准备,例如:准备程序的图标,将项目编译成release等。

    发布准备

    1. 设置应用程序图标
    1.1 设置图标(window)

    应用程序的图标分两种:

    • 主窗口图标,主要在程序运行时显示在主窗口左上角,或在任务栏上显示。

    首先在绘图工具(例如Photoshop)中设计好图标,图标的分辨率最好大于3232。图标需要用ico或*png的文件。如果想偷懒一点,直接去这里(http://www.iconfinder.com/)下载,大量好看免费的图标。

    将刚才的生成的图标文件放到yourProjectFolder/Resources/images目录下,或者任意一个程序可以找到的位置。最好将图标文件添加到qrc中统一管理,qrc文件的格式如下:

    <qresourceprefix="/background">
    
        <filealias="mainlogo">christmas_stocking.png</file>
    
    </qresource>
    

    然后再主窗口中使用,代码如下,代码很简单,不过记住这句代码一定要放到Mainwindow的构造函数里去,不然不会work。

    /setwindowicon/

    setWindowIcon(QIcon(QStringLiteral(":/background/mainlogo")));

    程序运行后的效果如下:

    在这里插入图片描述

    • 运行程序图标,一般在桌面或文件夹中显示的缩略图标,可以点击后运行程序。

    设置运行程序的图标在各个平台是各不相同的,下面分别介绍。首先准备分辨率最好大于3232的图标文件。图标需要用ico的文件。

    1. 使用Visual Studio IDE开发工具

    如果使用的是VisualStudio IDE开发工具,例如在VS2015中,项目上右击,添加,资源,选择icon,然后将之前准备的*ico图标文件导入,确定之后项目中就会出现一个 projectname.rc 的文件。
    在这里插入图片描述

    1. 使用QTCreator的IDE开发工具

    如果你是使用qmake生成makefile文件或使用QT Creator IDE,那么按下面三步实施:
    l 第一步:创建一个包含图标图像的ICO文件,并将其保存在资源文件目录下,例如命名为:myapp.ico;

    l 第二步:创建一个.rc文件,包含如下内容:

    IDI_ICON1 ICON DISCARDABLE “myapp.ico”

    l 第三步:在工程文件myapp.pro文件中写入如下内容:

    RC_FILE = myapp.rc

    再次编译程序,即可达到效果,效果图如下:

    在这里插入图片描述

    1.2 设置图标(mac)

    虽然许多程序可以创建图标文件(.icns),推荐的方法是使用由苹果公司提供的程序iconutil。Iconutil是一个命令行工具,它允许您导入多个不同大小的图标(在不同的上下文中使用),并能压缩文件。在您的项目目录中将所有一系列的图标保存在一个文件中。

    如果您正使用qmake生成makefile文件,您只需要将一个单一的行添加到您的.pro工程文件。例如,如果您的图标文件的名称是myapp.icns,并且您的项目文件名称是myapp.pro加入这一行到myapp.pro

    ICON = myapp.icns

    这将确保qmake把你的图标放在适当的位置并为图标创建一个Info.plist条目。

    如果你不使用qmake,你必须手动执行以下几点:

    1. 为您的应用程序(使用PropertyListEditor,在Developer/Applications中可以找到)创建一个Info.plist文件。

    2. 在Info.plist文件(同样,使用PropertyListEditor)关联您的.icns记录和CFBundleIconFile记录。

    3. 将Info.plist文件复制到你的应用程序包的Contents目录。

    4. 复制.icns文件到你的应用程序包的Contents/Resoures目录。

    1.3 设置图标(linux)

    在本节中,我们简要地介绍一下在两种常见的linux桌面环境:KDE和GNOME,为应用程序提供图标的相关问题 。为这两种桌面,用来描述应用程序图标的核心技术是相同的,也可以适用于其他,但具体到每一个来讲也有各自的细节。对使用这些Linux桌面系统的标准信息的主要来源是freedesktop.org。有关其他Linux桌面的信息,请参阅您感兴趣的桌面文档。

    通常情况下,用户不直接使用可执行文件,而是通过点击桌面上的图标来启动应用程序。这些图标是包含带有关于它的图标信息的应用程序的描述表示的“桌面项” 文件。这两种桌面环境都能够在这些文件中检索信息,并且可以用它们来生成应用程序的快捷方式到桌面上,在开始菜单中,或者在面板上。

    有关桌面项文件的更多信息,可以在Desktop EntrySpecification中找到。

    虽然桌面项文件可以有效地封装应用程序的详细信息,我们仍然需要将图标存储在每个桌面环境中的常规位置。用于图标的一些位置在Icon ThemeSpecification中给出了。

    虽然用于定位图标的路径依赖于在桌面上的使用和它的配置,下面所有这些目录结构应该遵循相同的模式:子目录都按照主题,图标大小和应用程序类型进行组织。 通常,应用程序图标被添加到高彩主题,因此方形的应用程序图标的大小为32像素,它将被存储在hicolor/32x32/apps目录的图标路径的下方。

    1、 K桌面环境(KDE)

    应用程序图标可以被所有用户或者一个单一的用户安装使用。当前登录到他们的KDE桌面的用户可以通过使用kde-config发现这些位置,例如,通过在终端窗口中键入执行下列操作:

    kde-config --pathicon

    通常情况下,被输出到stdout的以冒号分隔的路径列表中包含了用户特定的图标路径和全系统的路径。下面这些目录中,可以根据在Icon ThemeSpecification中描述的约定来定位并安装图标。

    如果您正在专门为KDE开发,你不妨利用KDE build system的优势来配置您的应用程序。这可以确保你的图标被安装在KDE的适当位置。

    KDE的开发者网站是http://developer.kde.org/。

    2、 GNOME

    应用程序图标都存储在包含与体系结构无关文件的一个标准全系统目录下。这个位置可以通过使用gnome-config来确定,例如,通过在一个终端窗口中键入以下命令:

    gnome-config–datadir

    输出在标准输出stdout的路径指的是包含一个名为pixmaps目录的位置;这个pixmaps目录中的目录结构中在Icon ThemeSpecification中进行了描述。

    如果您正在专门为GNOME开发,你可能希望使用一组标准的GNU Build Tools,在GTK+/GnomeApplication Development book的相关章节也作了说明。这可以确保你的图标被安装在为GNOME中的适当位置。

    2. 编译release版本

    注意将运行程序编译方式设置成Release,因为debug版本的程序中包含了调试信息,可以用来调试。而真正要发布程序时,要使用release版本,这样可以减少发布程序的体积同时增加软件的安全。

    在这里插入图片描述

    上图演示在Qt Creator中的设置方式,选中IDE左边的侧边栏的项目,然后再构建设置中将构建配置设置为Release。

    在这里插入图片描述

    打包发布程序

    安装QT SDK 后,默认采用的是动态链接库的编译方式,如果需要发布程序,需要在可执行的文件中添加必须的动态链接库,然而有些动态链接库文件很大,这并不是我们想要的结果。

    最好的办法是提交一个静态链接的程序。但是安装的Qt是动态编译的,要生成静态的版本,就需要自己重新进行编译。

    1. 静态编译

    静态编译
    l 优点,发布简单,单一文件。
    l 缺点,库文件很大,更新程序版本不方便。每次升级,都要重新分发所有的内容。

    静态发布虽然不需要较多的dll,发布简单、方便,但是往往会牵扯到授权问题(详情请查看Qt LGPL授权),动态发布则可以避免。。。如果附带了Qt的dll,就相当于发布了Qt的dll,而這些库是属于Qt的,这足以保证使用者知道程序使用了LGPL版本的Qt。

    1. 1 静态编译 (window)

    静态编译首先需要将

    mingw平台静态编译,在编译Qt的时候,有个configure.exe程序,

    configure.exe-static -platform win32-g++

    可以产生静态编译项目文件。然后,

    mingw32-makesub-src

    就可以编译出静态库。如果只是用来分发程序,也可以mingw32-makerelease sub-src只编译一个静态库。

    VC2015平台,在编译Qt的时候,configure.exe-static-platform win32-msvc2015

    然后nmakesub-src或者nmake release sub-src完成静态编译。

    再然后,就是把你的程序重新用静态编译的Qt再编译一次。

    你会得到一个非常大的可执行程序。推荐使用AspPack压缩一下。就可以发给用户了。

    1. 2 静态编译 (linux)

    1、下载源安装程序,如 qt-everywhere-opensource-src-5.5.1.tar.gz

    2、解压到某一目录

    3、cd 进入解压后的目录,命令:

    ./configure-static -release -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg -nomakedemos -nomake examples -qt-sql-sqlite -prefix /usr/local/Trolltech/Qt-5.5.1_static

    参数-static 指的是要采用静态编译Qt的方法

    参数-release指的是只编译release版本的库

    参数-qt-zlib -qt-gif-qt-libpng -qt-libmng -qt-libjpeg 是更好确定Qt编译出的程序能在目前不知的系统下运行。

    参数-nomake demos-nomake examples 指的是不编译demos和examples

    参数-qt-sql-sqlite 如果没有这个参数,configure的时候,可能会提示sqlite 有问题而中止。

    参数 -prefix/usr/local/Trolltech/Qt-5.5.1_static 指明静态编译的Qt安装的目录,命名Qt-5.5.1_static是为了区别动态编译安装的Qt,因为如果没有这个参数,安装时会覆盖之前动态编译安装的Qt(如果有的话)。

    u 注: 如果出现错误:Basic XLibfunctionality test failed!

    You might need to modify theinclude and library search paths by editing

    QMAKE_INCDIR_X11 andQMAKE_LIBDIR_X11

    解决办法:yum installlibX*

    (如果是Ubuntu也可运行sudo apt-getinstall libx11-dev libxext-dev libxtst-dev)

    4、没问题后

    make

    5、make没问题后再

    sudo make install

    6、增加(或改变)环境变量: (也可以不添加环境变量,使用绝对路径进行编译),在你home目录下你的的名字的目录中,在.profile文件中追加(或改变)如下环境变量:(为Qt设置一些特定的环境变量,这个很重要!.profile文件是隐藏的,可在你的名字目录下,按Ctrl+H显示所有文件查看到)

    QTDIR=/usr/local/Trolltech/Qt-5.5.1_static/

    PATH= Q T D I R / b i n : QTDIR/bin: QTDIR/bin:PATH

    MANPATH= Q T D I R / d o c / m a n : QTDIR/doc/man: QTDIR/doc/man:MANPATH

    LD_LIBRARY_PATH= Q T D I R / l i b : QTDIR/lib: QTDIR/lib:LD_LIBRARY_PATH

    export QTDIR PATHMANPATH LD_LIBRARY_PATH

    7、重启

    8、在终端测试一下qmake

    1. 3 静态编译 (mac)

    在MAC OS X系统平台下静态编译QT应用还是比较麻烦的,首先需要静态编译QT应用依赖的各个库,然后再进行连接生成运行文件,具体步骤参看链接:http://doc.qt.io/qt-5/osx-deployment.html。

    2. 附加Dll文件

    l 优点,更新方便,发布多个产品时,可以统一使用一个库。
    l 缺点,文件多、杂。

    Qt官方开发环境默认使用动态链接库方式,在发布生成的可执行程序时,我们需要复制一大堆动态库,如果自己去复制动态库,很可能丢三落四,导致程序在别的电脑里无法正常运行。 因此 Qt 官方开发环境里自带了一个部署工具来帮助开发者自动拷贝大部分的依赖库。在不同的平台使用方式也有所不同。

    2.1 附加Dll文件(window)

    Windows开发环境下windeployqt工具 (如果你已经将Qt的bin目录加入PATH环境,那么你可以直接在命令行使用windeployqt调用.)。首先,将项目中的release文件中的可执行文件拷到一个新建的文件夹中,例如project.exe,用Qt自带的生成必备的dll文件的程序windeployqt,来把必要的动态库拷到该文件夹中,打开命令行,输入windeployqtproject.exe,这时候大部分的dll文件都自动拷贝过来了,但是如果项目还用了一些其他的SDK,比如OpenCV,Chartdir51等等,就需要手动将所需dll拷贝过来,如果不知道还需要哪些软件,可以用Dependency Walker来查看缺少哪些dll文件。

    在这里插入图片描述

    拷贝完成后文件夹下的文件清单如下:

    在这里插入图片描述

    注意:如果发布的应用是Qt Quick Application应用,那么命令行需要加上QML的安装目录。命令中的D:\Qt\Qt5.5.1\qml是qml的安装目录,请换成你自己的qml安装目录!!!

    windeployqt hello.exe–qmldir D:\Qt\Qt5.5.1\qml

    接下来要高大上的朋友就可以用Enigma VirtualBox软件虚拟化工具将多个文件封装到应用程序主文件,从而制作成为单执行文件的绿色软件。

    2.2 附加Dll文件(linux)

    在X11平台下qt程序,首先准备好程序中需要使用的资源,库和插件…,比如你的可运行程序取名叫作panel,那把你的panel,那些libQt*.so.4和libQt*.so.4.6.0(链接和共享库都要)放在同一目录下(也可以不同,只要小小修改下shell文件).plugins就不多说了。

    在程序的同目录下,新建一個空文档,取名panel.sh (文件名与程序名同名,扩展名为sh,shell文件)。在panel.sh中原封不动的写入以下语句:

    #!/bin/sh
    
    appname=`basename $0 | sed s,/.sh$,,`
    
      dirname=`dirname$0`
    
      tmp="${dirname#?}"
    
      if ["${dirname%$tmp}" != "/" ]; then
    
       dirname=$PWD/$dirname
    
     fi
    
       LD_LIBRARY_PATH=$dirname
    
    export LD_LIBRARY_PATH
    
       $dirname/$appname$*
    

    保存文件,退出。在终端給文件+x属性: 切换到程序的目录,输入

       chmod +x panel.sh
    

    然后运行shell文件就行了(确保panel程序具备X属性),它会自动更改环境变量,运行程序。

    如果要调试shell文件,只需要在终端输入:

       sh -x panel.sh
    

    这样就ok了。

    如果需要把执行程序制作成DEB或RPM包的话请参考链接:

    Deploying aQt5 Application Linux: https://wiki.qt.io/Deploying_a_Qt5_Application_Linux

    2.3 附加Dll文件(mac)

    由于Qt的库并不是OS X标配的,所以我们要自己去复制库到app包里,才可以让app在其他未安装Qt的电脑上运行。

    比较幸运的是,Qt为我们提供了macdeployqt工具,借助于此,在OS X上发布Qt写的程序几乎是所有平台中最简单的。

    注:我电脑配置了Qt的bin环境,所以可以直接使用macdeployqt,如果没配置,可以用绝对路径去找。

    1.发布widgets程序

    a) 这个比较方便。选择Release模式,编译

    b) 运行macdeployqt

     对于我的工程,命令是:
    

    macdeployqt /Users/Ocean/Desktop/build-untitled-Desktop_5_5_1_64bit-Release/untitled.app-dmg

    然后回车,就打包好了。之后我们会发现,app目录下多了一个dmg文件

    此dmg文件,里面的app就是我们发布的app了。把dmg拷贝给别人,别人就可以直接使用了。

    l 注:如果直接拷贝app文件给别人,别人是无法直接运行的,会有权限问题(要用chmod给可执行文件加上x权限才可以运行)。而压缩过(zip或者dmg)后,拷贝给别人,别人是可以直接运行,没有权限问题。

    l 注:-dmg的意思就是在拷贝好库后,生成一个dmg文件,可以不加这个参数。

    2.发布quick2程序

    这个相对麻烦一点
    

    a) 选择Release模式,编译

    b) 打开终端,先切换编译的目标目录下

    对于我的工程,命令是:

     cd /Users/Ocean/Desktop/build-untitled-Desktop_5_5_1_64bit-Release
    

    c) 运行macdeployqt

    对于我的工程,命令是:

    macdeployqt untitled.app-qmldir=../untitled -dmg
    

    然后回车,就打包好了。

    • 注1:和widgets发布程序不同,untitled.app 这个名字,要直接输入,不要写 ./untitled.app 或者是其他的 绝对/相对 路径,不然打包出来的文件无法使用!!会报错!!!

    • 注2:-qmldir=…/untitled的意思就是说在…/untitled 目录下有qml文件,让macdeployqt去分析它们,把要用的库找过来。

    qt开发的mac应用打包发布

    一. 打包

    首先有以下几点需要注意:

    1,你的程序是否包含了第三方库?比如我这次发布的程序,程序就调用了第三方库;
    2,若没包含第三方库,在Mac下发布Qt程序还是很容易的,直接使用macdeployqt命令即可;参数:xxx.app -verbose=1 -dmg
    
    3, 图标添加方式:
    .pro中添加:ICON = xxx.icns
    工程中添加文件源文件:右键add就行
    widget.ui中windowIcon属性添加xxx.icns文件
    如果图标没有出现,删除 build debug 文件即可
    
    
    
    1. 如果只用了qt的库,直接用macdeployqt打包就可以了,会按照苹果要求的目录结构把库都拷进去;

    2. 如果程序中用到了第三方的库,则先执行步骤1,再把用到的库拷进.app/Contents/Frameworks/目录下;

    这里注意一点:需要修改库的包含路径 用otool -L( 例:otool -L myApp.app/Contents/MacOS/myApp )命令来查看程序依赖库,把第三方库的加载路径改成跟QT自带的库一样,.app/Contents/Frameworks/目录为:@rpath/;这里还有一个问题,就是第三方库可能还有些依赖库,跟上面方法一样,拷进来然后修改依赖关系;修改指令如下:

    install_name_tool -change “/usr/local/lib/libusb-0.1.4.dylib”(原依赖路径) “@executable_path/libusb-0.1.4.dylib”(新的依赖路径) ./bin/Release/libGinkgo_Driver.dylib(修改的文件);

    注:修改一次保存起来,以后再打新包直接拷贝就可以了;

    打包注意点:

    1,使用macdeployqt打包程序,比如我编译后的程序名字叫Bootloader,那么我可以用如下命令:macdeployqt Bootloader.app,该命令执行后在程序输出目录就有个Bootloader.app文件,如果你没调用第三方库,那么应用程序对Qt的依赖库会自动打包到这个文件里面,把这个文件拷贝给别人就可以直接运行了,如果你想打包成dmg格式的文件,则可以使用:macdeployqt Bootloader.app -verbose=1 -dmg,该命令执行后就会在程序输出目录产生一个Bootloader.dmg的文件。
    Qt技巧:如何在程序编译成功后自动执行这些命令?你只需要在Qt构建步骤里面添加自定义步骤即可,比如要执行macdeployqt Bootloader.app -verbose=1 -dmg命令,我们可以选择添加自定义步骤,然后命令填macdeployqt,参数填Bootloader.app -verbose=1 -dmg,如此即可实现编译完程序后自动执行该命令。
    如图所示为我在Mac下添加的命令:
    在这里插入图片描述

    2,由于我使用到了第三方库,macdeployqt可能不能找到第三方库,这样该命令也不会把这个第三方库打包到Bootloader.app里面,在其他没有这个第三方库的机器上运行可能就会提示找不到这个库而导致程序不能正常运行,因此我们需要拷贝第三方库到Bootloader.app里面,Bootloader.app本质上就是一个文件夹(按照windows系统的理解,不一定准确),我们可以看到Bootloader.app的目录组织结构,一般情况下如下图所示:

    在这里插入图片描述

    应用程序一般都是放到MacOS目录下面的,Mac下的程序和windows下的程序不一样,在windows下,一般只需要把第三方库(.dll的文件)放到程序目录即可,但是在Mac下却不行,我们可以用otool -L命令来查看程序依赖库,比如在这里我们使用命令:

    otool -L Bootloader.app/Contents/MacOS/Bootloader 
    
    比如在这里我们使用otool -L Bootloader.app/Contents/MacOS/Bootloader 命令,输出如下信息:
    Bootloader.app/Contents/MacOS/Bootloader:
        @executable_path/../Frameworks/libusb-0.1.4.dylib (compatibility version 9.0.0, current version 9.4.0)
        bin/Release/libGinkgo_Driver.dylib (compatibility version 0.0.0, current version 0.0.0)
        @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.3.0, current version 5.3.1)
        @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (compatibility version 5.3.0, current version 5.3.1)
        @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore (compatibility version 5.3.0, current version 5.3.1)
        /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
    其中libGinkgo_Driver.dylib即为我们所调用的第三方库,这个路径是不是感觉有点奇怪?不管他那么多了,我现在就想类似于windows这样,将这个库放到和可执行程序一个目录即可,所以我想把这个路径变为@executable_path/libGinkgo_Driver.dylib,这时候就需要使用到另外一个命令install_name_tool,这个命令也需要添加到Qt的自定义命令列表里面,添加方式同上,其完整命令为:
    install_name_tool -change "bin/Release/libGinkgo_Driver.dylib" "@executable_path/libGinkgo_Driver.dylib" Bootloader.app/Contents/MacOS/Bootloader
    这个命令的意思就是说将程序依赖的bin/Release/libGinkgo_Driver.dylib库更改为@executable_path/libGinkgo_Driver.dylib库,如此,Bootloader.app/Contents/MacOS/Bootloader这个程序运行的时候就会到当前目录寻找libGinkgo_Driver.dylib库,所以我们又需要把这个库拷贝到程序目录Bootloader.app/Contents/MacOS下面,这时候又要使用一个拷贝的命令了,用过linux的都应该知道是cp吧,完整命令如下:
    cp ../Bootloader/lib/libGinkgo_Driver.dylib Bootloader.app/Contents/MacOS/
    ../Bootloader/lib/libGinkgo_Driver.dylib即为第三方库所在位置,Bootloader.app/Contents/MacOS/即为要拷贝的目的位置,当然这个命令也需要添加到Qt自定义命令列表下面。
    
    这里还有一个小问题,因为libGinkgo_Driver.dylib这个库又调用了libusb-0.1.4.dylib库,我们用命令otool -L libGinkgo_Driver.dylib 得倒如下信息:
    libGinkgo_Driver.dylib:
        bin/Release/libGinkgo_Driver.dylib (compatibility version 0.0.0, current version 0.0.0)
        /usr/local/lib/libusb-0.1.4.dylib (compatibility version 9.0.0, current version 9.4.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
    由此可见,libGinkgo_Driver.dylib库需要依赖/usr/local/lib/libusb-0.1.4.dylib库,我又用上面的方法(install_name_tool 命令)将这个目录改成当前目录,所以我执行如下命令:
    install_name_tool -change "/usr/local/lib/libusb-0.1.4.dylib" "@executable_path/libusb-0.1.4.dylib" ./bin/Release/libGinkgo_Driver.dylib
    再次运行命令otool -L libGinkgo_Driver.dylib就输出如下信息了:
    libGinkgo_Driver.dylib:
        bin/Release/libGinkgo_Driver.dylib (compatibility version 0.0.0, current version 0.0.0)
        @executable_path/libusb-0.1.4.dylib (compatibility version 9.0.0, current version 9.4.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
    

    如此再将libusb-0.1.4.dylib库拷贝到程序目录即可,用cp命令,完整命令如下:

    cp Bootloader.app/Contents/Frameworks/libusb-0.1.4.dylib Bootloader.app/Contents/MacOS/
    

    我们再用命令hdiutil将Bootloader.app打包成dmg文件,完整命令如下:

    hdiutil  create -format UDBZ -quiet -srcfolder Bootloader.app Ginkgo_Bootloader_Mac_v2.7.29.dmg
    
    

    最后在程序目录就输出了Ginkgo_Bootloader_Mac_v2.7.29.dmg文件,这个就类似于windows下的程序安装包。

    下图为Qt下的所有自定义步骤:
    在这里插入图片描述
    第一个命令生成.app程序包
    第二个命令更改程序依赖库路径
    第三,第四个命令拷贝程序依赖库到指定位置
    第五个命令将.app程序包再压缩打包为dmg文件

    参考链接:
    http://qt-project.org/doc/qt-4.8/deployment-mac.html
    http://www.cnblogs.com/E7868A/archive/2012/12/02/2798225.html

    二. 签名
      签名相对比较复杂些:
    
    1. 准备好苹果的发布证书(需要开发证书和安装证书),把证书下载安装在电脑上;
      对库签名:
    指令:codesign --entitlements ${entitlementPath} -s "${cert}" ${frameworkpath}*
    

    注:${entitlementPath}:entitlements文件的路径,表示该应用使用电脑的一些权限(iCloud、push notification、App沙盒等),可以用xcode创建一个新的项目,直接拷贝过来使用;

    ${cert}: 证书名称,这里用的是Developer Application 如:3rd Party Mac Developer Application: … Limited (JTS5ZE6933)

    ${frameworkpath}: 库存放的目录:.app/Contents/Frameworks/
    
    对App签名:
    
    
     codesign --deep --entitlements ${entitlementPath} -s "${cert}" ${apppath}
    
    注:${apppath}: .app的路径 其它同上
    
    打成pkg安装包:
    

    productbuild --component a p p p a t h / A p p l i c a t i o n s − − s i g n &quot; {apppath} /Applications --sign &quot; apppath/Applicationssign"{certInstall}" myApplication.pkg

    ${certInstall}: Developer Installer证书,这里跟上面不一样:
    
    3rd Party Mac Developer Installer: ... Limited (JTS5ZE6933)
    
    1. 打包过程中有个很重要的问题就是修改info.plist

    在这里插入图片描述

    三. 上传App Store
    使用Application Loader工具上传打包好的.pkg文件,这里我碰到过两个问题:
    
    1. 一直提示info.plist为macOS程序,但是包为ipa文件:我这边是Application Loader的问题,下载了3.1版本的这个问题就没有了;

    2. 程序中用到了QtWebEngine,在QtWebEngineCore.framework中包含了QtWebEngineProcess.app的应用,这里一直提示:

    在这里插入图片描述
    需要修改QtWebEngineProcess.app里面info.plist的CFBundleIdentifier值,把’org.qt-project.Qt.QtWebEngineProcess’ 改成’org.qt-project.Qt.myApp.QtWebEngineProcess’ ;

    打包脚本:

    # 打包脚本:
    
    #!/bin/sh
    
    /Users/my/Qt5.9.3/5.9.3/clang_64/bin/macdeployqt /Users/my/Documents/chenmq/work/build-myApplication-Desktop_Qt_5_9_3_clang_64bit-Release/myApplication.app
    
    install_name_tool -change libqiniu.so @rpath/libqiniu.so /Users/my/Documents/chenmq/work/build-myApplication-Desktop_Qt_5_9_3_clang_64bit-Release/myApplication.app/Contents/MacOS/myApplication
    
    cp /Users/my/Documents/chenmq/QtTest/build-myApplication-Desktop_Qt_5_9_3_clang_64bit-Release/myApp.app/Contents/Frameworks/* /Users/my/Documents/chenmq/work/build-myApplication-Desktop_Qt_5_9_3_clang_64bit-Release/myApplication.app/Contents/Frameworks/
    
    

    签名脚本:

    apppath="/Users/my/Documents/chenmq/work/build-myApplication-Desktop_Qt_5_9_3_clang_64bit-Release/myApplication.app"
    
    frameworkpath="${apppath}/Contents/Frameworks/"
    
    pluginpath="${apppath}/Contents/PlugIns/"
    
    cert="3rd Party Mac Developer Application: mingquan(Hong Kong) Limited (JTS5ZE6933)"
    
    certInstall="3rd Party Mac Developer Installer: mingquan(Hong Kong) Limited (JTS5ZE6933)"
    
    entitlementPath="/Users/my/Desktop/mymac/mymac/mymac.entitlements"
    
    
    
    codesign --entitlements ${entitlementPath} -s "${cert}" ${frameworkpath}*
    
    codesign --entitlements ${entitlementPath} -s "${cert}" ${pluginpath}accessible/*
    
    codesign --entitlements ${entitlementPath} -s "${cert}" ${pluginpath}audio/*
    
    codesign --entitlements ${entitlementPath} -s "${cert}" ${pluginpath}imageformats/*
    
    codesign --entitlements ${entitlementPath} -s "${cert}" ${pluginpath}mediaservice/*
    
    codesign --entitlements ${entitlementPath} -s "${cert}" ${pluginpath}platforms/*
    
    codesign --entitlements ${entitlementPath} -s "${cert}" ${pluginpath}printsupport/*
    
    codesign --entitlements ${entitlementPath} -s "${cert}" ${pluginpath}sqldrivers/*
    
    
    
    codesign --deep --entitlements ${entitlementPath} -s "${cert}" ${apppath}
    
    
    
    productbuild --component ${apppath} /Applications --sign "${certInstall}" myApplication.pkg
    
    

    参考文档:

    打包:https://blog.csdn.net/imxiangzi/article/details/50994466

    https://blog.csdn.net/casun_li/article/details/71741968

    签名:https://www.apps121.com/2017/12/22/qtmacappstore/

    https://stackoverflow.com/questions/32379982/api-calls-dont-run-when-i-codesign-my-mac-os-x-app

    qt开发的linux应用打包发布

    展开全文
  • QT multimedia 安装

    千次阅读 2019-05-30 15:16:02
    由于交叉编译环境问题,Qt编译时 -phonon 并不能安装phonon插件。需要进入src/phonon目录下执行qmake,make,make install QT5.6.1版本:https://blog.csdn.net/x_y_z423/article/details/90697748 ...
  • 搞了我一天,终于在linux下成功安装Qt,我用的系统是Fedora 9。首先下载qt-x11-opensource-src-4.3.2.tar.gz源码包(地址是:http://down1.chinaunix.net/distfiles/qt-x11-opensource-src-4.3.2.tar.gz,将这个...
  • QT4.3.2安装

    千次阅读 2012-07-22 14:50:17
    最近学习QT,参考的一本书是《精通QT4编程》(第二版),顺便说一下,这本书相当不错,就是没有讲到如何安装QT开发环境,我在QT官网上下载到的是4.7.2版本,安装之后不知道哪里的问题,安装不成功,后来又参考别人的...
  • QT linux安装

    万次阅读 2017-12-22 12:52:42
    转载地址:... ...    1.4 Qt在Linux下安装 Qt在Linux系统里的安装要稍微复杂一些,因为Linux发行版众多,所以安装过程有些差异。 由于Linux系统都可以自行安装 GNU 工具集(对应W
  • 安装桌面版Linux QT安装ARM版本QT

    千次阅读 2016-12-09 17:19:05
    安装qt-everywhere-opensource-src-4.8.1.tar.gz,安装的是桌面版本的。 需要在开发板上运行,就要安装ARM-qt版。 大致有两种方法获得arm的qmake; 1、安装arm版本QT; 将qt-everywhere-op
  • Qt 4.8.0安装

    千次阅读 2012-02-27 16:24:25
    在chroot环境中安装Qt 4.8.0 编译报错: make[1]: Entering directory `/root/qt-everywhere-opensource-src-4.8.0/src/corelib' g++ -c -pipe -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/...
  • qt-everywhere-source-src4.7.1软件包安装qt的详细步骤
  • Qt Creator安装与使用

    千次阅读 2018-03-13 18:11:16
    Qt Creator介绍Qt是一个跨平台C++图形用户界面应用程序开发框架。Qt既可以开发GUI程序,也可用于控制台工具和服务器开发。Qt Creator是 Qt 推出的一款跨平台的,轻量级集成开发环境(IDE)。Qt框架约等于MFC 。Qt ...
  • Hi3521A Qt5.6 qtmultimedia 安装

    千次阅读 2019-05-30 15:45:40
    QT5.6.1版本,由于交叉编译环境...1.进入qt源目录(qt-everywhere-opensource-src-5.6.1)目录中,新建build_multimedia 2.cdbuild_multimedia 3.执行命令:/opt/Qt5.6-arm/bin/qmake ../qtmultimedia/ #我的安...
  • qt-x11-opensource-src-4.3.2 自带编译以及安装教程。已经试过,编译安装都没有问题。完全可用的资源。
  • QT4.5安装

    千次阅读 2009-10-22 18:52:00
    本文以QT4.5 版为例,分别介绍QT4.5 linux x11版、QT4.5 embedded linux 版(arm)、QT4.5 windows版、QT4.5 wince版编译安装。第一步:下载QT的源码包或者sdk。 在www.qtsoftware.com 或者 ftp.trolltech.com ...
  • 1、QT安装 QT环境及QTcreator的配置

    千次阅读 2013-04-28 10:19:04
    QT安装及环境配置 一、windows的下QT安装及环境配置 (一)从框架安装程序中安装 步骤: 准备:下载QT库,下载指定版本的MINGW,QT IDE 1、下载QT安装文件如:qt-win-opensoure-4.6.4-mingw.exe 2、下载...
  • Qt5 安装mysql驱动

    千次阅读 2017-08-30 19:07:59
    Qt5 安装MYSQL数据库驱动 本文以Qt5.9.0为准。 在Qt环境中使用MYSQL数据库的同学,应该都遇到过下面这段提示:QSqlDatabase: MYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 ...
  • QtXlsx编译安装

    2021-01-07 20:52:28
    一.下载QtXlsx类,地址:https://github.com/VSRonin/QtXlsxWriter 二.安装Perl5 方式一:官网下载安装。下载Perl5地址:https://www.perl.org/get.html,根据你Qt版本...1.用Qt creator打开QtXlsxWriter\src目录
  • QT安装

    千次阅读 2017-04-19 10:12:54
    书上介绍的方法太老了,网上找了一大堆安装方法,都或多或少有各种问题,以下是我自己摸索出来的与大家分享!另外不建议大家现在用QT5,参考资料不多,建议初学者先从QT4学起。本文写作时间是2013年11月份。 ...
  • Linux系统下QT安装与配置

    千次阅读 2019-09-26 16:46:53
    1.1 已安装好的linux系统(本教程以红帽6.7为例)、Qt源程序包(点击名称可进入下载地址,本教程以qt-everywhere-opensource-src-4.7.3.tar.gz为例)、QtCreater安装包(点击名称可进入下载地址,本教程以qt-creator...
  • Qt安装MySQL驱动

    千次阅读 2017-04-02 13:21:39
    测试环境windows + MingGW 32bit + Qt5.5.1 32bit安装步骤Step1: mysql官网下载mysql源码 (看清楚Qt是32bit还是64bit)。网址:https://dev.mysql.com/downloads/mysql/ mysql放置位置为:D:\mysqlStep2: 编译。...
  • QTqt4.8.6安装(详细教程)

    万次阅读 多人点赞 2018-06-21 09:23:33
    简介Qt是跨平台的图形开发库,目前由Digia全资子公司 Qt Company 独立运营,官方网址: http://www.qt.io/ 也可以访问Qt项目域名:http://qt-project.org/ Qt本身支持众多操作系统。从通用操作系统Linux、Windows...
  • QT Creator安装版跟进 QT源码笔记

    千次阅读 2015-12-10 11:14:20
    我在官网下载了  ...其实在安装的时候就可以选择安装源码,第一次安装的时候使用的是默认选项,没有源码,后来卸载后,我选择了全部安装,然后再运行Qt Creator。 依次进入“工具“=>“选项
  • qt4安装

    千次阅读 2009-03-21 10:12:00
    前些天项目要求用qt4 从网找了些安装帮助,总结了一下,整理上来,以供参考:1建立批处理:注意vc2005的安装目录。以及configure的参数 set oldpath=%path%set path="C:/Program Files/Microsoft Visual Stud 8.0/...
  • 配置编译qt-everywhere-src-5.12.7安装交叉编译链已配置好TSLIB编译注意事项配置编译qt源码执行脚本对于硬浮点设置相关参数配置QTCreator打开选项添加qmake添加已安装的arm版本交叉编译工具链最后组合下PS:对于强迫...
  • Qt Creator 安装 VLD

    千次阅读 2015-04-14 16:52:55
    一、环境说明 1、VLD 内存检测工具,只能检测使用VC++编译器,不能用于检测MinGW编译器  所以要检测 Qt内存泄露问题编译器一定要是MSVC。... 2、VC++编译器 即MSVC 如果有安装VS则就有这编译器  
  • 嵌入式Qt4.7.1安装详解

    千次阅读 2015-08-07 10:21:05
    嵌入式Qt 4.7.1安装移植过程详解 环境: Ubuntu 12.04 VMware 9.0 qt软件包:qt-everywhere-opensource-src-4.7.1.tar.gz (飞凌自带)  http://www.kuaipan.cn/file/id_111560663117095120.htm 访问密码...
  • src文件用于qt操作excel

    2021-01-23 13:33:23
    src文件用于qt操作excel
  • redhat下qt安装

    千次阅读 2016-03-31 23:20:27
    Qt 是一个跨平台的 C++ 图形用户界面库,由挪威 TrollTech 公司出品,目前包括Qt, 基于 Framebuffer 的 Qt Embedded,快速开发工具 Qt Designer,国际化工具 Qt Linguist 等部分 Qt 支持所有 Unix 系统,当然也包括...
  • 首先进入qt-everywhere-opensource-src-4.8.5目录,然后执行./configure -prefix (自己要安装的目录) 接着根据提示输入“o”,“yes”,接下来如果出现如下错误时 Basic XLib functionality test failed! You might ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,424
精华内容 14,169
关键字:

qtsrc如何安装