• QT .pro文件的学习收获


    1. 载pro文件预定义宏:

    CONFIG(debug,debug|release){
    DEFINES+=__DEBUG__
    }else{
    DEFINES+=__RELEASE__
    macx:DESTDIR=$$PWD/../../Setup/MacOS/XXX.app/Contents
    macx:QMAKE_POST_LINK+=install_name_tool-change $(QTDIR)/src path @executable_path/  dest path    $(DESTDIR)/ file &&
    install_name_tool-change $(QTDIR)/src path @executable_path/  dest path    $(DESTDIR)/ file &&
    }
    DEFINES 预定于宏,DESTDIR编译完成后,文件输出的位置,QMAKE_POST_LINK 编译完成后执行的操作。

    qt程序载mac平台的发布:
    假设QT的app程序结构如下:
    XXX.app
      Contents
        MacOS
        Labrary
        Frameworks
        PlugIn
        qt.config

    发布的步骤:
    1. 首先将Labrary 和MacOS中所有二进制文件中依赖的qt的frameworks(QtCore、QtGui、QtPrintSupport、QtWidgets)放在Frameworks中;
    2. 将平台相关的插件(libqcocoa.dylib(只用你的程序使用cocoa的东西好像就需要这个插件)、libqico.dylib(如果你的程序使用了图标这个插
    件是必须的))放在PlugIn目录中;
    3. qt.conf中写入插件需要目录:
    [Paths]
    PlugIns += plugIns

    4.使用otool -l工具查看所有的二进制文件,看是否依赖QT的frameworks,如果依赖,则使用inatall_name_tool工具修改依赖的frameworks的路径,
    修改的方法如下:
    macx:QMAKE_POST_LINK+=install_name_tool-change$(QTDIR)/lib/QtWidgets.framework/Versions/5/QtWidgets   
    @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets
    $(DESTDIR)/XXX.app/Contents/MacOS/XXX &&
    install_name_tool-change$(QTDIR)/lib/QtGui.framework/Versions/5/QtGui  
    @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui
    $(DESTDIR)/XXX.app/Contents/MacOS/XXX&&

    5. 使用install_name_tool工具修改QtCore、QtGui、QtPrintSupport、QtWidgets 中的依赖的其他的framework的路径(例如QtGui是依赖QtCore的)
    修改完后QtGui的截图如下:

    修改完QtWidgets的截图如下:


      修改完QtPrintSupport的截图如下:

    修改完的libqcocoa.dylib的如图所示:


      注意:为了使修改比较简单,plugIn的上级目录就是Contents,这样所有的路径都向上翻一个路径就可以了,PlugIn下的目录如下:

      platforms文件中存放的是libqcocoa.dylib的软连接文件。同样imageformats中存放的也是libqico.dylib的软连接文件。
      6. 这些步骤完成后,将mac系统上的qt的安装目录重命名,然后测试,看是否成功,如果不成功,使用控制台启动xxx.app/Contents/xxx
    看出错的原因,改正错误。
      7. 一切都好了以后,打包发布。














  • 相关阅读:
    HTML基础之HTML标签-html header(meta,title) html body(p,br,h,form,div,span,input,lable)
    day5_非空即真非零即真
    day5_不能循环删除list-深拷贝、浅拷贝(import copy)
    day5_函数返回值
    day4_局部变量和全局变量
    day5_函数的参数
    python字符串与列表的相互转换
    python自动化返回:no tests were fount Empty test suite
    读取Excel数据封装
    测试工程题
  • 原文地址:https://www.cnblogs.com/watchdatalearn2012620/p/3333620.html
Copyright © 2020-2023  润新知