多环境配置随意切换开关工具软件(PyMake v7.5.5)

PyMake是一款Python开发的工具,支持Python3,专为Qt、Android等复杂环境提供环境配置、切换和执行功能。它解决了在多平台编译时环境配置繁琐的问题,支持保存和切换多个环境,便于并行编译。该工具历经多次迭代,目前功能强大,能够执行保存的命令和系统命令,可在独立环境中运行,并能在bat、sh文件中导出环境。用户可以通过安装脚本快速安装和卸载。
摘要由CSDN通过智能技术生成


#概述
中文名:多环境配置随意切换工具软件
英文名:Multi-environ Manager
简称:PyMake

这套工程使用Python开发,支持Python3,目的在于为包括Qt、Android等这样的复杂环境提供System、Custom、Separate环境保存、切换、和执行能力。

开发的初衷

接触Qt开发的时候在做嵌入式,通常会编译两套程序,一套桌面的,一套嵌入式的。开始的时候也没有什么难过,Qt Creator都把环境配置好了,编译就行了。后来,我开发了一套库LibQQt,给应用程序提供通用框架。当我要编译Windows桌面、Android手机、Android模拟器,Linux桌面、嵌入式Linux,macOS桌面、iOS模拟器,等等多个目标平台的时候,问题来了,我要开多个IDE进行编译,一个IDE编译多个库的时候就需要等待。痛苦不堪。
Qt强大的跨平台能力,一个IDE窗口无法发挥他的全部能力。
怎么办呢?我去寻找了多个工程管理工具,cmake、scoins、xmake,他们和qmake一样,甚至还比不上qmake,都需要配置复杂的环境然后开启编译。
自己开发一个吧。定立了程序目标,能够配置多个环境,可以应对多个环境的并行编译。

开发程序的过程

说起来容易,可实施起来,还是蛮费劲的,我从2017年9月决定开发这款工具,一直开发到现在,2019年4月。历时一年半还多,已经开发到第七代,才良好的达到了我的目标。
先说第一代,先把cmake支持起来,因为cmake的环境配置最简单,我决定使用pymake.json作为保存环境的文件。文件里加入几个list,分别存储path,env变量,命令。第一代只能维持一次编译,只能保存一个环境。可是,已经保存了一个环境不是吗。千里之行始于足下,已经开始了!
使用着第一代产品,然后开发第二代,路途还遥远。我升级了保存命令的部分代码,先能运行多个命令再说。在开发的一开始我就使用了KaTeX parse error: Expected group after '^' at position 138: …直接跳过了第四代,开发第五代。^̲^ 第五代沿用了第三代…{}变量引用符的使用。可是我纠结于到底是把path+放在environ的外边还是里边,所以第五代我做起了测试,先把path+放在environ字段的外边。数据结构达到了空前的复杂,我写代码写到了飘忽,这可是用python开发啊,竟然解析数据结构解析到飘忽。需要配置的字段太多了,没有人能记得住需要配置哪些字段。
我急忙开始开发第六代,仔细设计了保存环境的数据结构。我保留path-assemblage字段、environ字段、command字段,我正式把path+字段移动进了environ里,并且属于确定的某一个环境,每个环境都有自己的path+字段,并且environ字段里有current字段,表示默认使用的环境。我规范了对${}的使用,只能从下往上顺序解开。command字段里也开始保存命令组,每组命令由多步命令组成,可以存很多组这样的命令。
第六代还是比较满意的,我2018年使用了一年,效果不错。我可以在确定而且独立的环境下,在确定的位置执行我的bat或者sh脚本;我可以在bat里导出我保存的环境,影响当前的bat脚本的环境,这大大简化了bat里对环境的设置和清理工作。但是第六代还是存在不足,功能比较少。
最近两个月我深度的优化了代码,开始开发第七代,增加了很多使用很充分的功能。以下仔细介绍。

开发成果

讲讲第七代的强大功能吧,他能够在独立的环境里执行PyMake保存的命令和系统命令,可以临时的使用某个保存的环境执行命令,也可以在bat、sh文件当中导出保存的环境进行使用,还可以在当前的命令行里使用pyenv、pyvc、pycmd使用保存的环境和命令!太强大了。
哦,程序的名字叫PyMake,命令行里使用pymake、pymm、mm等别名,我使用install脚本进行安装。
PyMake天生就是跨平台的,使用Python进行开发,不依赖第三方包,只使用默认包!安装即可使用,卸载即可无效!
回想读大学的时候,随意向系统Path里添加路径的历史吧,回想2017年希望配置复杂、多变的环境而看着命令行束手无策的感受吧。
现在好了,复杂的环境、多变的环境,都能胜任了。我把环境保存起来了!随时启用!

介绍下PyMake的提供的命令和脚本。
先说说脚本,PyMake7提供了mm、pymm、pymake、pyenv、pyvc、pycmd、pyinfo等程序分别提供不同的具体的功能,install.bat即可全部安装,unstall.bat即可卸载干净。在Unix平台上,安装器和卸载器后缀名为.sh
再说说命令,pymake是主程序,所有的重要的环境配置命令都由他提供。
现在根据脚本不同分别进行介绍,用户安装后可以使用全部bat或者sh,稍微注意下Unix下,使用风格和Windows有点区别。
使用之前,请执行一下,观察下命令行,随后需要编辑下自己的环境,或者从我提供的环境里port出自己的环境,配置一次环境,以后就光使用。
pymake:
source命令:切换环境文件的目录,切换环境文件。一般一个操作系统使用一个环境文件,.json后缀的文件,在我提供的example里面有很多.json环境文件,用户可以仿照配置自己的环境,port命令可以导出很具体的环境哦,这一个环境文件,保存了很多环境,互相冲突或者兼容,都知道的,多目标编译的时候,需要使用不同的环境,环境之间是冲突的。
set命令:在设定完成环境文件后,使用set命令进行具体的设置,包括设置path、env内容、command内容。一般我会记事本2编辑.json文件,那样更方便,当然set命令也很方便。set current env非常方便。
list/show命令:查看path、env、cmd的配置,非常beautiful。环境多的记不清了就list以下。
env命令:和上边的命令一样的性质,只是查看env的具体配置。我特别喜欢这个命令,我最关注这个命令。别名environ
see命令:查看用户保存的命令集。有cmd、ss两个别名。
clean命令:pymake执行用户程序时会生成*_effect.bat/_unset.bat/_exec.bat,临时生成,如果用户程序执行崩溃,这些bat就会留下,clean命令可以准确的清理他们。pymakev8我会把这些bat移动到确定的目录下,pymake7这些bat跟随用户环境文件目录移动。
here命令:pymake执行用户程序会在默认执行目录下执行,这个目录可以用get default exec root命令获取到,here命令则迫使pymake在当前目录下执行用户程序。pymake的很多命令都支持here参数。别名hh。
export命令:将用户保存的env,依照环境名导出。不是环境文件哦,里边有好多环境,他们各有各的名字,pymake能够找到他们依照名字导出给用户使用。
type命令:将用户保存的cmd,依照命令名导出。pymake可以帮助用户保存一些命令,命令组,各有名字,可以按照名字导出给用户使用。
exec命令:执行用户输入的命令。别名cc。包括pymake保存的,包括系统的,都可以执行,只要当前环境里找得到的,都可以执行。
use命令:以上几个命令都是在current环境下执行的,也就是pymake里保存的用户默认环境。use命令促使pymake在用户指定的保存的环境下工作。这个用途很广泛,可以使用某个环境导出env、cmd,可以使用某个环境查看环境文件内的各项数据。
have/has命令:查看环境文件中是否存在某个配置,path、env、cmd等都可以查看,返回True或者False。
get命令:包含获取当前env,即默认env;获取默认执行目录;获取所有信息,包括环境文件所在、程序所在、程序INI所在,source/program可以获取到具体的值,返回字串。
initialize:用户进行了某些非法操作,pymake没处理上,initialize即可。initialize会把用户环境目录重置到默认位置。然后用户继续设置到自己的环境文件目录即可。
port/translate命令:这是个重要的命令。用户自己有一些环境,别人有一些环境,用户和别人之间希望互相使用下环境,可是用户不愿意直接使用,而且路径还有一点分歧。env的配置是可以通用的,也有特用的。用户可以使用port/translate这一对命令在自己和别人的环境文件之间进行数据传输。包括传输path、传输env、传输cmd。可以具体到传输某个项。这是一个很beautiful的命令,显示很美观、直观,使用对比视图。
-h,–version:默认命令。
pymm,mm:这两个脚本是pym·ake的别名脚本,用户安装后也可以使用这两个命令调用以上命令。
pyenv:
open/close命令:用户使用pyenv有非常大的好处,他可以在当前执行器下,使用pymake保存的环境影响当前执行器的环境。并且可以开启、可以关闭。
pyvc:
open/close命令:这个命令和上边那个是一样的,可是,这个可以启动vc环境,而且用户可以设定使用哪个vc环境,使用什么目标都可以轻易设置,已经被用户保存起来了!
pycmd:
这个脚本,是对pyenv命令的封装,他允许在当前执行器环境里,使用用户指定或者默认的环境执行用户保存的或者系统的命令,并且影响当前环境。
pyinfo:
这个脚本还在开发之中,为用户提供丰富的PC信息等。
这几个脚本的目标是把pymake保存的环境、命令,应用于当前执行器。
历时1-2年,如此之久,开发出这样的多环境配置器,随意切换环境,实在是了不起的建筑,我自己都觉得自己了不起。^^
说了这么多命令和脚本,看看PyMake的庐山真面目。

程序截图

命令行:
R:\Develop\b0-toolkits\a0-compiler\PyMake\test>mm
Usage:
  pymake7.py source
  pymake7.py source file [ <source-path-file> ]
  pymake7.py source root [ <source-root-path> ]
  pymake7.py source config [ --add  ] [ <config-file-name> ] [<new-config-file-name>]
  pymake7.py source config [ --del  ] [ <config-file-name> ] [<new-config-file-name>]
  pymake7.py source config [ --mod  ] [ <config-file-name> ] [<new-config-file-name>]
  pymake7.py source config [ --switch  ] [ <config-file-name> ] [<new-config-file-name>]
  pymake7.py source config [ --restore  ] [ <config-file-name> ] [<new-config-file-name>]
  pymake7.py source config [ --show ] [ <config-file-name> ] [<new-config-file-name>]
  pymake7.py -------------------------------------------------------------
  pymake7.py set path ( --add | --del | --mod ) <name> [ <value> ]
  pymake7.py set env [ path ] ( --add | --del | --mod ) <group> <name> [ <value> ]
  pymake7.py set cmd (--add | --del | --mod ) <name> [ <values> ... ]
  pymake7.py set cur env <name>
  pymake7.py list 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值