Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in
read-only mode
.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
开发的初衷
接触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变量,命令。第一代只能维持一次编译,只能保存一个环境。可是,已经保存了一个环境不是吗。千里之行始于足下,已经开始了!
使用着第一代产品,然后开发第二代,路途还遥远。我升级了保存命令的部分代码,先能运行多个命令再说。在开发的一开始我就使用了${}引用变量。
可能是太过于追求简化命令了,第三代,我重新设计了保存环境的数据结构,使用起environ字段,继续加大简化命令,结果导致命令简化到只有一个个单词在那里,多步命令,多步单词,谁都看不明白命令组里到底保存了什么。
我直接跳过了第四代,开发第五代。^^
第五代沿用了第三代的设计,在数据结构上继续强化对${}变量引用符的使用。可是我纠结于到底是把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:这两个脚本是pymake的别名脚本,用户安装后也可以使用这两个命令调用以上命令。
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 [ path | env | cmd ] [<name>] [-r | --raw] [-a | --all]
pymake7.py env [<name>] [-p | --path] [-v | --var] [-r | --raw] [-a | --all]
pymake7.py -------------------------------------------------------------
pymake7.py here clean
pymake7.py here export [ <env-name> ] [ to <file-name> ]
pymake7.py here type [ <cmd-name> ] [ to <file-name> ]
pymake7.py here use <env-name> exec [ <command-names> ... ]
pymake7.py here exec [ <command-names> ... ]
pymake7.py here use <env-name> cc [ <command-names> ... ]
pymake7.py here cc [ <command-names> ... ]
pymake7.py -------------------------------------------------------------
pymake7.py clean [ here | hh ]
pymake7.py export [ here | hh ] [ <env-name> ] [ to <file-name> ]
pymake7.py type [ here | hh ] [ <cmd-name> ] [ to <file-name> ]
pymake7.py exec [ here | hh ] [ <command-names> ... ]
pymake7.py cc [ here | hh ] [ <command-names> ... ]
pymake7.py use <env-name> type [ here | hh ] [ <cmd-name> ] [ to <file-name> ]
pymake7.py use <env-name> exec [ here | hh ] [ <command-names> ... ]
pymake7.py use <env-name> cc [ here | hh ] [ <command-names> ... ]
pymake7.py -------------------------------------------------------------
pymake7.py set current env <name>
pymake7.py set default env <name>
pymake7.py show [ path | env | cmd ] [<name>] [-r | --raw] [-a | --all]
pymake7.py environ [<name>] [-p | --path] [-v | --var] [-r | --raw] [-a | --all]
pymake7.py see [ <cmd-name> ] [ use <env-name> ] [-r | --raw] [-a | --all]
pymake7.py ss [ <cmd-name> ] [ use <env-name> ] [-r | --raw] [-a | --all]
pymake7.py cmd [ <cmd-name> ] [ use <env-name> ] [-r | --raw] [-a | --all]
pymake7.py use <env-name> see [ <cmd-name> ] [-r | --raw] [-a | --all]
pymake7.py use <env-name> ss [ <cmd-name> ] [-r | --raw] [-a | --all]
pymake7.py use <env-name> cmd [ <cmd-name> ] [-r | --raw] [-a | --all]
pymake7.py -------------------------------------------------------------
pymake7.py hh clean
pymake7.py hh export [ <env-name> ] [ to <file-name> ]
pymake7.py hh type [ <cmd-name> ] [ to <file-name> ]
pymake7.py hh use <env-name> exec [ <command-names> ... ]
pymake7.py hh exec [ <command-names> ... ]
pymake7.py hh use <env-name> cc [ <command-names> ... ]
pymake7.py hh cc [ <command-names> ... ]
pymake7.py -------------------------------------------------------------
pymake7.py have path <name> [-r | --raw]
pymake7.py have env [ path ] [ <group> ] [ <name> ] [-r | --raw]
pymake7.py have cmd <name> [-r | --raw]
pymake7.py has path <name> [-r | --raw]
pymake7.py has env [ path ] [ <group> ] [ <name> ] [-r | --raw]
pymake7.py has cmd <name> [-r | --raw]
pymake7.py -------------------------------------------------------------
pymake7.py get cur env
pymake7.py get current env
pymake7.py get default env
pymake7.py get env
pymake7.py get env ( cur | current | default )
pymake7.py -------------------------------------------------------------
pymake7.py program
pymake7.py program root
pymake7.py program file
pymake7.py program configure
pymake7.py program configure root
pymake7.py program configure file
pymake7.py get all
pymake7.py get all ( info | information )
pymake7.py get all ( stat | status )
pymake7.py get default exec root
pymake7.py get exec root [ default | here ]
pymake7.py initialize
pymake7.py -------------------------------------------------------------
pymake7.py port
pymake7.py port root [ <source-config-root> ] [ to <target-config-root> ]
pymake7.py port config [ <source-config-file> ] [ to <target-config-file> ]
pymake7.py port file [ <source-path-file> ] [ to <target-path-file> ]
pymake7.py port reset
pymake7.py translate
pymake7.py translate ( path | env | cmd )
pymake7.py translate ( path | env | cmd ) <key-name> [ to <target-key-name> ] [ -f | --force ]
pymake7.py translate ( path | env | cmd ) [ -a | --all ] [ -f | --force ]
pymake7.py translate all [ -a | --all ] [ -f | --force ]
pymake7.py translate section
pymake7.py translate section <section-name> [ to <target-section-name> ] [ -f | --force ]
pymake7.py translate section [ -a | --all ] [ -f | --force ]
pymake7.py -------------------------------------------------------------
pymake7.py (-h | --help)
pymake7.py --version
R:\Develop\b0-toolkits\a0-compiler\PyMake\test>
命令部1:
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm initialize
SOURCE : R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
SOURCE ROOT : R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
SOURCE CONFIG : pymake.json
successed
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm get all
CURRENT ENVIRON macOS
SOURCE : R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
SOURCE ROOT : R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
SOURCE CONFIG : pymake.json
-----------------------------------------
PROGRAM : R:\Develop\b0-toolkits\a0-compiler\PyMake\pymake7.py
PROGRAM ROOT : R:\Develop\b0-toolkits\a0-compiler\PyMake
PROGRAM FILE : pymake7.py
-----------------------------------------
CONFIGURE : C:\Users\Administrator\.pymake\pymake.ini
CONFIGURE ROOT: C:\Users\Administrator\.pymake
CONFIGURE FILE: pymake.ini
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm get all status
EXECUTE ROOT [HERE ]: R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
EXECUTE ROOT [DEFAULT]: R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm get default env
macOS
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm get default exec root
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm program
R:\Develop\b0-toolkits\a0-compiler\PyMake\pymake7.py
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm source
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>
命令部2:在命令行里显示的比较整齐
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm show
macOS
android.mobile
android.x86
iOSSimulator
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm env
macOS
android.mobile
android.x86
iOSSimulator
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm env qt5
please ensure the environ is right
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm env macOS
env macOS
path+:
${cmake.bin}
${qt5.9.clang.bin}
variable:
QTVERSION ${qt5.9.version}
QTDIR ${qt5.9.clang}
QTSPEC -spec macx-clang
QTCONFIG CONFIG+=x86_64
QKIT macOS
QSYS macOS
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm env macOS -r
env macOS
path+:
/Users/abel/Develop/b0-toolskits/a0-compiler/CMake.app/Contents/bin
/Users/abel/Develop/b0-toolskits/macLibraries/Qt/5.9.2/clang_64/bin
variable:
QTVERSION 5.9.2
QTDIR /Users/abel/Develop/b0-toolskits/macLibraries/Qt/5.9.2/clang_64
QTSPEC -spec macx-clang
QTCONFIG CONFIG+=x86_64
QKIT macOS
QSYS macOS
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm env macOS -r -a
env macOS
path+:
/Users/abel/Develop/b0-toolskits/a0-compiler/CMake.app/Contents/bin
/Users/abel/Develop/b0-toolskits/macLibraries/Qt/5.9.2/clang_64/bin
R:/Develop/b0-toolkits/winLibraries/Qt/5.9.2/mingw53_32/bin
R:/Develop/b0-toolkits/winLibraries/Qt/Tools/mingw530_32/bin
R:/Develop/b0-toolkits/winCompilers/cmake3.9.1_64/bin
R:/Develop/e0-tools/doxygen/graphviz-2.38/bin
R:/Develop/e0-tools/doxygen/bin
R:/Develop/b0-toolkits/winLibraries/Qt/5.9.2/mingw53_32/bin
R:/Develop/b0-toolkits/winLibraries/Qt/Tools/mingw530_32/bin
R:/Develop/b0-toolkits/winCompilers/cmake3.9.1_64/bin
R:/Develop/e0-tools/doxygen/graphviz-2.38/bin
R:/Develop/e0-tools/doxygen/bin
C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\System32\Wbem
C:\WINDOWS\System32\WindowsPowerShell\v1.0\
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
C:\Program Files\TortoiseGit\bin
C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\System32\Wbem
C:\WINDOWS\System32\WindowsPowerShell\v1.0\
C:\WINDOWS\System32\OpenSSH\
C:\Program Files\Microsoft Network Monitor 3\
D:\HsuHelper\TZWebPdf
D:\HsuHelper\TZKey
R:\Develop\e0-tools\doxygen\bin
C:\Program Files\Git\cmd
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Scripts\
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\
C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps
variable:
QTVERSION 5.9.2
QTDIR /Users/abel/Develop/b0-toolskits/macLibraries/Qt/5.9.2/clang_64
QTSPEC -spec macx-clang
QTCONFIG CONFIG+=x86_64
QKIT macOS
QSYS macOS
ALLUSERSPROFILE C:\ProgramData
APPDATA C:\Users\Administrator\AppData\Roaming
COMMONPROGRAMFILES C:\Program Files\Common Files
COMMONPROGRAMFILES(X86) C:\Program Files (x86)\Common Files
COMMONPROGRAMW6432 C:\Program Files\Common Files
COMPUTERNAME SC-201803271727
COMSPEC C:\WINDOWS\system32\cmd.exe
DRIVERDATA C:\Windows\System32\Drivers\DriverData
FILEPATH R:\Develop\b0-toolkits\a0-compiler\PyMake\
FPS_BROWSER_APP_PROFILE_STRING Internet Explorer
FPS_BROWSER_USER_PROFILE_STRING Default
HOMEDRIVE C:
HOMEPATH \Users\Administrator
LOCALAPPDATA C:\Users\Administrator\AppData\Local
LOGONSERVER \\SC-201803271727
NUMBER_OF_PROCESSORS 20
ONEDRIVE C:\Users\Administrator\OneDrive
OS Windows_NT
PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE AMD64
PROCESSOR_IDENTIFIER Intel64 Family 6 Model 62 Stepping 4, GenuineIntel
PROCESSOR_LEVEL 6
PROCESSOR_REVISION 3e04
PROGRAMDATA C:\ProgramData
PROGRAMFILES C:\Program Files
PROGRAMFILES(X86) C:\Program Files (x86)
PROGRAMW6432 C:\Program Files
PROMPT $P$G
PSMODULEPATH C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
PUBLIC C:\Users\Public
PYENVEXISTEDFLAG True
PYENVFLAG True
PYENVINDEX 15870
PYENVNAME qt5
PYMMDEFAULTENVNAME qt5
PYMMSHELLROOT R:\Develop\b0-toolkits\a0-compiler\PyMake\example
PYMMSOURCECONFIG pymake7-win-tai.json
PYMMSOURCEROOT R:\Develop\b0-toolkits\a0-compiler\PyMake\example
PYPROGRAMNAME pymake.bat
PYPROGRAMPATH R:\Develop\b0-toolkits\a0-compiler\PyMake\
PYPROGRAMPATHNAME R:\Develop\b0-toolkits\a0-compiler\PyMake\pymake.bat
QKIT WIN32
QSYS Windows
QTDIR R:/Develop/b0-toolkits/winLibraries/Qt/5.9.2/mingw53_32
QTSPEC -spec win32-g++
QTVERSION 5.9.2
SESSIONNAME Console
SYSTEMDRIVE C:
SYSTEMROOT C:\WINDOWS
TEMP C:\Users\ADMINI~1\AppData\Local\Temp
TMP C:\Users\ADMINI~1\AppData\Local\Temp
USERDOMAIN SC-201803271727
USERDOMAIN_ROAMINGPROFILE SC-201803271727
USERNAME Administrator
USERPROFILE C:\Users\Administrator
WINDIR C:\WINDOWS
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>
命令部3:
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm port
port: source file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
port: source root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
port: source config is pymake.json
port: target file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\temp-target.json
port: target root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
port: target config is temp-target.json
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm translate
translate: source file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
translate: source root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
translate: source config is pymake.json
translate: target file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\temp-target.json
translate: target root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
translate: target config is temp-target.json
---------------------------------------------------------------------
[source] pymake.json [target] temp-target.json [status]
all sections:
path-assemblage path-assemblage [NORMAL]
environ environ [NORMAL]
command command [NORMAL]
variable-assemblage Tips [NORMAL]
command-assemblage [EMPTY] 1 [NORMAL]
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm translate cmd
translate: source file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
translate: source root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
translate: source config is pymake.json
translate: target file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\temp-target.json
translate: target root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
translate: target config is temp-target.json
---------------------------------------------------------------------
[source] pymake.json [target] temp-target.json [status]
command:
test [EMPTY] 1 [NORMAL]
qqt.build [EMPTY] 2 [NORMAL]
qqt.clean [EMPTY] 3 [NORMAL]
Qt [EMPTY] 4 [NORMAL]
cmake [EMPTY] 5 [NORMAL]
prod [EMPTY] 6 [NORMAL]
libtool [EMPTY] 7 [NORMAL]
Qt.check [EMPTY] 8 [NORMAL]
Qt4.build [EMPTY] 9 [NORMAL]
Qt4.8.7.build [EMPTY] 10 [NORMAL]
QtSoap.build [EMPTY] 11 [NORMAL]
qqt.push [EMPTY] 12 [NORMAL]
qqt.pull [EMPTY] 13 [NORMAL]
qqt.cloc [EMPTY] 14 [NORMAL]
android.sdk [EMPTY] 15 [NORMAL]
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm translate cmd -a
translate: source file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
translate: source root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
translate: source config is pymake.json
translate: target file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\temp-target.json
translate: target root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
translate: target config is temp-target.json
---------------------------------------------------------------------
[source] pymake.json [target] temp-target.json [status]
command:
test test [SUCCESS][ ]
qqt.build qqt.build [SUCCESS][ ]
qqt.clean qqt.clean [SUCCESS][ ]
Qt Qt [SUCCESS][ ]
cmake cmake [SUCCESS][ ]
prod prod [SUCCESS][ ]
libtool libtool [SUCCESS][ ]
Qt.check Qt.check [SUCCESS][ ]
Qt4.build Qt4.build [SUCCESS][ ]
Qt4.8.7.build Qt4.8.7.build [SUCCESS][ ]
QtSoap.build QtSoap.build [SUCCESS][ ]
qqt.push qqt.push [SUCCESS][ ]
qqt.pull qqt.pull [SUCCESS][ ]
qqt.cloc qqt.cloc [SUCCESS][ ]
android.sdk android.sdk [SUCCESS][ ]
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm translate cmd -a
translate: source file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
translate: source root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
translate: source config is pymake.json
translate: target file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\temp-target.json
translate: target root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
translate: target config is temp-target.json
---------------------------------------------------------------------
[source] pymake.json [target] temp-target.json [status]
command:
test test [CANCEL ][EXISTED]
qqt.build qqt.build [CANCEL ][EXISTED]
qqt.clean qqt.clean [CANCEL ][EXISTED]
Qt Qt [CANCEL ][EXISTED]
cmake cmake [CANCEL ][EXISTED]
prod prod [CANCEL ][EXISTED]
libtool libtool [CANCEL ][EXISTED]
Qt.check Qt.check [CANCEL ][EXISTED]
Qt4.build Qt4.build [CANCEL ][EXISTED]
Qt4.8.7.build Qt4.8.7.build [CANCEL ][EXISTED]
QtSoap.build QtSoap.build [CANCEL ][EXISTED]
qqt.push qqt.push [CANCEL ][EXISTED]
qqt.pull qqt.pull [CANCEL ][EXISTED]
qqt.cloc qqt.cloc [CANCEL ][EXISTED]
android.sdk android.sdk [CANCEL ][EXISTED]
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm translate cmd -a -f
translate: source file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
translate: source root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
translate: source config is pymake.json
translate: target file is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\temp-target.json
translate: target root is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
translate: target config is temp-target.json
---------------------------------------------------------------------
[source] pymake.json [target] temp-target.json [status]
command:
test test [SUCCESS][EXISTED][FORCE]
qqt.build qqt.build [SUCCESS][EXISTED][FORCE]
qqt.clean qqt.clean [SUCCESS][EXISTED][FORCE]
Qt Qt [SUCCESS][EXISTED][FORCE]
cmake cmake [SUCCESS][EXISTED][FORCE]
prod prod [SUCCESS][EXISTED][FORCE]
libtool libtool [SUCCESS][EXISTED][FORCE]
Qt.check Qt.check [SUCCESS][EXISTED][FORCE]
Qt4.build Qt4.build [SUCCESS][EXISTED][FORCE]
Qt4.8.7.build Qt4.8.7.build [SUCCESS][EXISTED][FORCE]
QtSoap.build QtSoap.build [SUCCESS][EXISTED][FORCE]
qqt.push qqt.push [SUCCESS][EXISTED][FORCE]
qqt.pull qqt.pull [SUCCESS][EXISTED][FORCE]
qqt.cloc qqt.cloc [SUCCESS][EXISTED][FORCE]
android.sdk android.sdk [SUCCESS][EXISTED][FORCE]
R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>
好了就这些吧,希望各位搞Qt的同事,Enjoy it。
Multi-environ Manager Project gitee Link
Multi-environ Manager Project gitee Link (Mobile)