• 3328阅读
  • 4回复

Multi-link Technology [复制链接]

上一主题 下一主题
离线drabel
 

图酷模式  只看楼主 倒序阅读 楼主  发表于: 2018-07-20
问题所在
你在编译完App以后怎么发布App的?
你编译完App去生成目录里发布吗?
那些配置文件怎么拷贝过去的?配置conf,数据,主题,音视频资源,尤其是主题里这些图片文件。
那些依赖项目怎么拷贝过去的?
那些翻译文件你怎么拷贝过去的?先lupdate然后lrelease,然后手动拷贝过去吗?
程序的logo图标你怎么解决的?每次都手动运行命令生成rc文件吗吗?尤其在macOS下,手动运行命令生成icns文件?
你知道如何设置工程版本,然后把工程版本宏传递给源代码吗?
然后windeployqt?
你是怎么管理依赖项的SDK的?放在工程当前目录吗?多个平台的,都放在当前目录?如果你的app有非常多的依赖项,手可以负担吗?
你编译完App以后,他又非常多的配置项目,你能直接看到运行效果吗?
Qt的工程初始设置,比较复杂,你先学习qmake语法,在学习设置一个工程需要的初始化配置,然后配置自己的工程?
假设你有很多工程,你每个工程都要这么做一遍吗?哦,不,非常多的遍,每一个工程。假设你的依赖库经常变动的话,似乎更繁重了。
使用方法
这些全部,我是说全部可以用一个工具解决,你只需要编译,去产品库运行一下,看看效果,就可以打个包,发给别人,你觉得会不会对解放双手有用?

现在,这个工具,竟然是基于qmake的工具,已经研发出来了。
Multi-link Technology!
--在这里包含技术简介是否合理。。。

看图说话。
window.open('http://www.qtcn.org/bbs/attachment/Mon_1807/44_163478_9da10a2a5700adf.png?166');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >
我手写的,看起来希望清晰。
看,使用方法是不是很简单。
  1. 初始设置multi-link,找到app_configure.pri按照qmake语法设置APP_BUILD_ROOT LIB_SDK_ROOT APP_DEPLOY_ROOT 三个主变量。
  2. 包含multi-link/add_base_manager.pri到自己的工程里。
  3. add_deploy() add_language() add_version() add_dependent_manager() add_deploy_library() add_deploy_config() 你想干什么就add什么。
  4. library使用add_sdk() 而不是add_deploy()
  5. 在工程配置页给自己的工程设置个目标平台,可以参见add_platform.pri,这个步骤实在是太容易了。
  6. 编译吧。
  7. 然后呢?你现在想要什么?肯定是已经可以鼠标点点就运行的程序,对,去应用程序发布目录看看,你的程序已经躺在那里!点他!点他!快点他!(multi-link提供productExecTool,可以帮助用户集中管理app的点击运行,如果app太多了,这非常有用。)
  8. 打个包,发给别人吧,你的客户们肯定已经等不及了。(好像发了一个demo的感觉。)

好吧,使用方法实在是太简单了,用户去探索下就好了。
来看看庐山真面目吧。

哦,是的,他就是长了这个样子,include(pri)到工程里以后,他就那样了。别忘了到,项目-构建设置,设置ENV,也就是构建环境那。每个工程各不相同。指示构建目标架构。
制造原理
知道他长的样子了,了解一下原理吧。

我把App和Library的生产环节,分为build sdk deploy三大环节。
App和Library生产线分离。各自一条。
App产品从build位置开始,到发布位置,multi-link控制了整条生产线,起到生产线控制器的作用。
人则站在App Source的位置,只需要编辑代码就可以了,生产线其他环节,都自动完成。我是学自动化的,我喜欢干这个活。让它自动完成!
Library产品线一样的。

功能清单
这里尽可能多的列举功能,使用户对multi-link技术工具全貌有一个全面的初步认识。
  • 上边图里的我就不说了,跨windows、macOS、linux(笔者使用ubuntu kylin x64)三个平台,功能已经全面完成。
  • 这些功能,就是在qmake阶段设置好所有的用户过去需要手动做的工作,通过QMAKE_POST_LINK自动完成。
  • add_function.pri add_project.pri里面提供了丰富的基本功能,用户可以用其扩展技术外功能。
  • add_deploy() 发布app到app发布目录 用于app工程。
  • add_sdk() 发布sdk到sdk目录 用于library工程。
  • add_dependent_manager() 为工程添加依赖的SDK,它会到SDK目录查找具体的SDK,输入参数,sdk包名,sdk包内子模块名。比如:Qt, Widgets.这里吆告诉读者,把Qt SDK放到SDK目录里也有效果。通常这一个函数链接库的SDK就够用了,里面包含了add_include() 包含头文件路径 add_library() 链接库 add_defines() 添加library的宏定义 add_deploy_library() 把库跟随app发布到app发布目录。
  • add_deploy_config() 将指定路径的配置文件发布到build路径和product发布路径。
  • add_icons() 为应用程序添加logo,尤其windows和macOS下。
  • add_language() 为应用程序添加翻译文件,自动添加翻译文件,用户只需要找到文件翻译下就可以了。
  • add_version() 为应用程序添加版本信息。

multi-link提供的工具
  1. multi-link内部默认支持了40多套SDK,但是有一些用户还是会需要更多的SDK,所以muti-link为用户提供AddLibraryTool用于生成add_library_xxx.pri,它只需要读取SDK目录里的SDK就可以生成pri。这个pri用于add_dependent_manager()和add_custom_dependent_manager()调用链接库的。叫做链接环。内置的多数为QtWrapper的library。用户编译好SDK,在SDK目录里为其放好位置,剩下的事情就交给multi-link解决吧。
  2. multi-link提供addlibrarytool multiple版,支持多个sdk同时操作。
  3. multi-link提供sdklisttool,用于查看sdk列表是否完善,可以帮助用户统计和完善sdk目录。
  4. multi-link提供productexectool,帮助用户运行丰富的app。
  5. multi-link提供configtool,帮助用户图形化配置multi-link的三大主路径。

看图,已经支持很多SDK。

以上。

看Multi-link技术,请记住它的来源,它来源于LibQQt,我的一套应用于 Application Framework 的Library工程。

multi-link源代码链接地址
链接地址: https://gitee.com/drabel/multi-link

LibQQt
致力于多环境开源Application Framework,为业务层App和Library保驾护航。
工程链接:https://gitee.com/drabel/LibQQt
工程链接:https://gitee.com/drabel/multi-link

Multi-environ
致力于多操作系统多环境便捷命令运行,基于Python的多环境命令执行工具。
工程链接:https://gitee.com/drabel/PyMake

Multi-building
致力于多环境多工程视窗化命令执行,基于PyQt5的多工程视窗化命令执行工具。
工程链接:https://gitee.com/drabel/PyAutoMake

联系我
QQ: 2657635903
mail: tianduanrui@163.com
离线yyzq

只看该作者 1楼 发表于: 2018-07-20
离线toby520

只看该作者 2楼 发表于: 2018-07-20
确实很牛逼 自动化构建 省时省力 我们现在也是这样做的
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线hanheyfon

只看该作者 3楼 发表于: 2018-07-28
i can't understand
离线drabel

只看该作者 4楼 发表于: 2018-08-29
回 hanheyfon 的帖子
hanheyfon:i can't understand (2018-07-28 20:39) 

这个技术需要足够的工程管理思想支持,你先了解qmake的工程管理地位,然后再学习Multi-link会容易点,越是工程数目大的时候越是用的到。
LibQQt
致力于多环境开源Application Framework,为业务层App和Library保驾护航。
工程链接:https://gitee.com/drabel/LibQQt
工程链接:https://gitee.com/drabel/multi-link

Multi-environ
致力于多操作系统多环境便捷命令运行,基于Python的多环境命令执行工具。
工程链接:https://gitee.com/drabel/PyMake

Multi-building
致力于多环境多工程视窗化命令执行,基于PyQt5的多工程视窗化命令执行工具。
工程链接:https://gitee.com/drabel/PyAutoMake

联系我
QQ: 2657635903
mail: tianduanrui@163.com
快速回复
限100 字节
 
上一个 下一个