• 3042阅读
  • 0回复

多环境随意配置开关工具(PyMake V7.2) [复制链接]

上一主题 下一主题
离线drabel
 

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

开发程序的过程
    说起来容易,可实施起来,还是蛮费劲的,我从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、pypowershell等程序分别提供不同的具体的功能,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的庐山真面目。

程序截图
  1. Microsoft Windows [版本 10.0.17134.706]
  2. (c) 2018 Microsoft Corporation。保留所有权利。
  3. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm
  4. Usage:
  5.   pymake7.py source
  6.   pymake7.py source file [ <source-path-file> ]
  7.   pymake7.py source root [ <source-root-path> ]
  8.   pymake7.py source config [ --add  ] [ <config-file-name> ] [<new-config-file-name>]
  9.   pymake7.py source config [ --del  ] [ <config-file-name> ] [<new-config-file-name>]
  10.   pymake7.py source config [ --mod  ] [ <config-file-name> ] [<new-config-file-name>]
  11.   pymake7.py source config [ --switch  ] [ <config-file-name> ] [<new-config-file-name>]
  12.   pymake7.py source config [ --restore  ] [ <config-file-name> ] [<new-config-file-name>]
  13.   pymake7.py source config [ --show ] [ <config-file-name> ] [<new-config-file-name>]
  14.   pymake7.py -------------------------------------------------------------
  15.   pymake7.py set path ( --add | --del | --mod ) <name> [ <value> ]
  16.   pymake7.py set env [ path ] ( --add | --del | --mod ) <group> <name> [ <value> ]
  17.   pymake7.py set cmd (--add | --del | --mod ) <name> [ <values> ... ]
  18.   pymake7.py set cur env <name>
  19.   pymake7.py list [ path | env | cmd ] [<name>] [-r | --raw] [-a | --all]
  20.   pymake7.py env [<name>] [-p | --path] [-v | --var] [-r | --raw] [-a | --all]
  21.   pymake7.py -------------------------------------------------------------
  22.   pymake7.py here clean
  23.   pymake7.py here export [ <env-name> ] [ to <file-name> ]
  24.   pymake7.py here type [ <cmd-name> ]  [ to <file-name> ]
  25.   pymake7.py here use <env-name> exec [ <command-names> ... ]
  26.   pymake7.py here exec [ <command-names> ... ]
  27.   pymake7.py here use <env-name> cc [ <command-names> ... ]
  28.   pymake7.py here cc [ <command-names> ... ]
  29.   pymake7.py -------------------------------------------------------------
  30.   pymake7.py clean [ here | hh ]
  31.   pymake7.py export [ here | hh ] [ <env-name> ] [ to <file-name> ]
  32.   pymake7.py type [ here | hh ] [ <cmd-name> ] [ to <file-name> ]
  33.   pymake7.py exec [ here | hh ] [ <command-names> ... ]
  34.   pymake7.py cc [ here | hh ] [ <command-names> ... ]
  35.   pymake7.py use <env-name> type [ here | hh ] [ <cmd-name> ]  [ to <file-name> ]
  36.   pymake7.py use <env-name> exec [ here | hh ] [ <command-names> ... ]
  37.   pymake7.py use <env-name> cc [ here | hh ] [ <command-names> ... ]
  38.   pymake7.py -------------------------------------------------------------
  39.   pymake7.py set current env <name>
  40.   pymake7.py set default env <name>
  41.   pymake7.py show [ path | env | cmd ] [<name>] [-r | --raw] [-a | --all]
  42.   pymake7.py environ [<name>] [-p | --path] [-v | --var] [-r | --raw] [-a | --all]
  43.   pymake7.py see [ <cmd-name> ] [ use <env-name> ] [-r | --raw] [-a | --all]
  44.   pymake7.py ss [ <cmd-name> ] [ use <env-name> ] [-r | --raw] [-a | --all]
  45.   pymake7.py cmd [ <cmd-name> ] [ use <env-name> ] [-r | --raw] [-a | --all]
  46.   pymake7.py use <env-name> see [ <cmd-name> ] [-r | --raw] [-a | --all]
  47.   pymake7.py use <env-name> ss [ <cmd-name> ] [-r | --raw] [-a | --all]
  48.   pymake7.py use <env-name> cmd [ <cmd-name> ] [-r | --raw] [-a | --all]
  49.   pymake7.py -------------------------------------------------------------
  50.   pymake7.py hh clean
  51.   pymake7.py hh export [ <env-name> ] [ to <file-name> ]
  52.   pymake7.py hh type [ <cmd-name> ]  [ to <file-name> ]
  53.   pymake7.py hh use <env-name> exec [ <command-names> ... ]
  54.   pymake7.py hh exec [ <command-names> ... ]
  55.   pymake7.py hh use <env-name> cc [ <command-names> ... ]
  56.   pymake7.py hh cc [ <command-names> ... ]
  57.   pymake7.py -------------------------------------------------------------
  58.   pymake7.py have path <name> [-r | --raw]
  59.   pymake7.py have env [ path ] [ <group> ] [ <name> ] [-r | --raw]
  60.   pymake7.py have cmd <name> [-r | --raw]
  61.   pymake7.py has path <name> [-r | --raw]
  62.   pymake7.py has env [ path ] [ <group> ] [ <name> ] [-r | --raw]
  63.   pymake7.py has cmd <name> [-r | --raw]
  64.   pymake7.py -------------------------------------------------------------
  65.   pymake7.py get cur env
  66.   pymake7.py get current env
  67.   pymake7.py get default env
  68.   pymake7.py get env
  69.   pymake7.py get env ( cur | current | default )
  70.   pymake7.py -------------------------------------------------------------
  71.   pymake7.py program
  72.   pymake7.py program root
  73.   pymake7.py program file
  74.   pymake7.py program configure
  75.   pymake7.py program configure root
  76.   pymake7.py program configure file
  77.   pymake7.py get all
  78.   pymake7.py get all ( info | information )
  79.   pymake7.py get all ( stat | status )
  80.   pymake7.py get default exec root
  81.   pymake7.py get exec root [ default | here ]
  82.   pymake7.py initialize
  83.   pymake7.py -------------------------------------------------------------
  84.   pymake7.py port
  85.   pymake7.py port root [ <source-config-root> ] [ to <target-config-root> ]
  86.   pymake7.py port config [ <source-config-file> ] [ to <target-config-file> ]
  87.   pymake7.py port file [ <source-path-file> ] [ to <target-path-file> ]
  88.   pymake7.py port reset
  89.   pymake7.py translate
  90.   pymake7.py translate ( path | env | cmd )
  91.   pymake7.py translate ( path | env | cmd ) <key-name> [ to <target-key-name> ] [ -f | --force ]
  92.   pymake7.py translate ( path | env | cmd ) [ -a | --all ] [ -f | --force ]
  93.   pymake7.py translate all [ -a | --all ] [ -f | --force ]
  94.   pymake7.py translate section
  95.   pymake7.py translate section <section-name> [ to <target-section-name> ] [ -f | --force ]
  96.   pymake7.py translate section [ -a | --all ] [ -f | --force ]
  97.   pymake7.py -------------------------------------------------------------
  98.   pymake7.py (-h | --help)
  99.   pymake7.py --version
  100. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm initialize
  101. SOURCE        : R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
  102. SOURCE ROOT   : R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  103. SOURCE CONFIG : pymake.json
  104. successed
  105. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm get all
  106. CURRENT ENVIRON macOS
  107. SOURCE        : R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
  108. SOURCE ROOT   : R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  109. SOURCE CONFIG : pymake.json
  110. -----------------------------------------
  111. PROGRAM       : R:\Develop\b0-toolkits\a0-compiler\PyMake\pymake7.py
  112. PROGRAM ROOT  : R:\Develop\b0-toolkits\a0-compiler\PyMake
  113. PROGRAM FILE  : pymake7.py
  114. -----------------------------------------
  115. CONFIGURE     : C:\Users\Administrator\.pymake\pymake.ini
  116. CONFIGURE ROOT: C:\Users\Administrator\.pymake
  117. CONFIGURE FILE: pymake.ini
  118. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm get all status
  119. EXECUTE ROOT [HERE   ]: R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  120. EXECUTE ROOT [DEFAULT]: R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  121. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm get default env
  122. macOS
  123. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm get default exec root
  124. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  125. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm program
  126. R:\Develop\b0-toolkits\a0-compiler\PyMake\pymake7.py
  127. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm source
  128. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
  129. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm show
  130. macOS
  131. android.mobile
  132. android.x86
  133. iOS
  134. iOSSimulator
  135. qt4
  136. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm env
  137. macOS
  138. android.mobile
  139. android.x86
  140. iOS
  141. iOSSimulator
  142. qt4
  143. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm env qt5
  144. please ensure the environ is right
  145. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm env macOS
  146. env macOS
  147. path+:
  148.   ${cmake.bin}
  149.   ${qt5.9.clang.bin}
  150. variable:
  151.   QTVERSION                      ${qt5.9.version}
  152.   QTDIR                          ${qt5.9.clang}
  153.   QTSPEC                         -spec macx-clang
  154.   QTCONFIG                       CONFIG+=x86_64
  155.   QKIT                           macOS
  156.   QSYS                           macOS
  157. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm env macOS -r
  158. env macOS
  159. path+:
  160.   /Users/abel/Develop/b0-toolskits/a0-compiler/CMake.app/Contents/bin
  161.   /Users/abel/Develop/b0-toolskits/macLibraries/Qt/5.9.2/clang_64/bin
  162. variable:
  163.   QTVERSION                      5.9.2
  164.   QTDIR                          /Users/abel/Develop/b0-toolskits/macLibraries/Qt/5.9.2/clang_64
  165.   QTSPEC                         -spec macx-clang
  166.   QTCONFIG                       CONFIG+=x86_64
  167.   QKIT                           macOS
  168.   QSYS                           macOS
  169. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm env macOS -r -a
  170. env macOS
  171. path+:
  172.   /Users/abel/Develop/b0-toolskits/a0-compiler/CMake.app/Contents/bin
  173.   /Users/abel/Develop/b0-toolskits/macLibraries/Qt/5.9.2/clang_64/bin
  174.   C:\WINDOWS\system32
  175.   C:\WINDOWS
  176.   C:\WINDOWS\System32\Wbem
  177.   C:\WINDOWS\System32\WindowsPowerShell\v1.0\
  178.   C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
  179.   C:\Program Files\TortoiseGit\bin
  180.   C:\WINDOWS\system32
  181.   C:\WINDOWS
  182.   C:\WINDOWS\System32\Wbem
  183.   C:\WINDOWS\System32\WindowsPowerShell\v1.0\
  184.   C:\WINDOWS\System32\OpenSSH\
  185.   C:\Program Files\Microsoft Network Monitor 3\
  186.   D:\HsuHelper\TZWebPdf
  187.   D:\HsuHelper\TZKey
  188.   R:\Develop\e0-tools\doxygen\bin
  189.   C:\Program Files\Git\cmd
  190.   C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Scripts\
  191.   C:\Users\Administrator\AppData\Local\Programs\Python\Python36\
  192.   C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps
  193. variable:
  194.   QTVERSION                      5.9.2
  195.   QTDIR                          /Users/abel/Develop/b0-toolskits/macLibraries/Qt/5.9.2/clang_64
  196.   QTSPEC                         -spec macx-clang
  197.   QTCONFIG                       CONFIG+=x86_64
  198.   QKIT                           macOS
  199.   QSYS                           macOS
  200.   ALLUSERSPROFILE                C:\ProgramData
  201.   APPDATA                        C:\Users\Administrator\AppData\Roaming
  202.   COMMONPROGRAMFILES             C:\Program Files\Common Files
  203.   COMMONPROGRAMFILES(X86)        C:\Program Files (x86)\Common Files
  204.   COMMONPROGRAMW6432             C:\Program Files\Common Files
  205.   COMPUTERNAME                   SC-201803271727
  206.   COMSPEC                        C:\WINDOWS\system32\cmd.exe
  207.   DRIVERDATA                     C:\Windows\System32\Drivers\DriverData
  208.   FILEPATH                       R:\Develop\b0-toolkits\a0-compiler\PyMake\
  209.   FPS_BROWSER_APP_PROFILE_STRING Internet Explorer
  210.   FPS_BROWSER_USER_PROFILE_STRING Default
  211.   HOMEDRIVE                      C:
  212.   HOMEPATH                       \Users\Administrator
  213.   LOCALAPPDATA                   C:\Users\Administrator\AppData\Local
  214.   LOGONSERVER                    \\SC-201803271727
  215.   NUMBER_OF_PROCESSORS           20
  216.   ONEDRIVE                       C:\Users\Administrator\OneDrive
  217.   OS                             Windows_NT
  218.   PATHEXT                        .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
  219.   PROCESSOR_ARCHITECTURE         AMD64
  220.   PROCESSOR_IDENTIFIER           Intel64 Family 6 Model 62 Stepping 4, GenuineIntel
  221.   PROCESSOR_LEVEL                6
  222.   PROCESSOR_REVISION             3e04
  223.   PROGRAMDATA                    C:\ProgramData
  224.   PROGRAMFILES                   C:\Program Files
  225.   PROGRAMFILES(X86)              C:\Program Files (x86)
  226.   PROGRAMW6432                   C:\Program Files
  227.   PROMPT                         $P$G
  228.   PSMODULEPATH                   C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
  229.   PUBLIC                         C:\Users\Public
  230.   SESSIONNAME                    Console
  231.   SYSTEMDRIVE                    C:
  232.   SYSTEMROOT                     C:\WINDOWS
  233.   TEMP                           C:\Users\ADMINI~1\AppData\Local\Temp
  234.   TMP                            C:\Users\ADMINI~1\AppData\Local\Temp
  235.   USERDOMAIN                     SC-201803271727
  236.   USERDOMAIN_ROAMINGPROFILE      SC-201803271727
  237.   USERNAME                       Administrator
  238.   USERPROFILE                    C:\Users\Administrator
  239.   WINDIR                         C:\WINDOWS
  240. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm port
  241. port: source file   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
  242. port: source root   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  243. port: source config is pymake.json
  244. port: target file   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\temp-target.json
  245. port: target root   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  246. port: target config is temp-target.json
  247. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm translate
  248. translate: source file   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
  249. translate: source root   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  250. translate: source config is pymake.json
  251. translate: target file   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\temp-target.json
  252. translate: target root   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  253. translate: target config is temp-target.json
  254. ---------------------------------------------------------------------
  255. [source] pymake.json          [target] temp-target.json     [status]
  256. all sections:
  257. path-assemblage               path-assemblage               [NORMAL]
  258. environ                       environ                       [NORMAL]
  259. command                       command                       [NORMAL]
  260. variable-assemblage           Tips                          [NORMAL]
  261. command-assemblage            [EMPTY] 1                     [NORMAL]
  262. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm translate cmd
  263. translate: source file   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
  264. translate: source root   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  265. translate: source config is pymake.json
  266. translate: target file   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\temp-target.json
  267. translate: target root   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  268. translate: target config is temp-target.json
  269. ---------------------------------------------------------------------
  270. [source] pymake.json          [target] temp-target.json     [status]
  271. command:
  272. test                          test                          [NORMAL]
  273. qqt.build                     qqt.build                     [NORMAL]
  274. qqt.clean                     qqt.clean                     [NORMAL]
  275. Qt                            Qt                            [NORMAL]
  276. cmake                         cmake                         [NORMAL]
  277. prod                          prod                          [NORMAL]
  278. libtool                       libtool                       [NORMAL]
  279. Qt.check                      Qt.check                      [NORMAL]
  280. Qt4.build                     Qt4.build                     [NORMAL]
  281. Qt4.8.7.build                 Qt4.8.7.build                 [NORMAL]
  282. QtSoap.build                  QtSoap.build                  [NORMAL]
  283. qqt.push                      qqt.push                      [NORMAL]
  284. qqt.pull                      qqt.pull                      [NORMAL]
  285. qqt.cloc                      qqt.cloc                      [NORMAL]
  286. android.sdk                   android.sdk                   [NORMAL]
  287. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm translate cmd -a
  288. translate: source file   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
  289. translate: source root   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  290. translate: source config is pymake.json
  291. translate: target file   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\temp-target.json
  292. translate: target root   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  293. translate: target config is temp-target.json
  294. ---------------------------------------------------------------------
  295. [source] pymake.json          [target] temp-target.json     [status]
  296. command:
  297. test                          test                          [CANCEL ][EXISTED]
  298. qqt.build                     qqt.build                     [CANCEL ][EXISTED]
  299. qqt.clean                     qqt.clean                     [CANCEL ][EXISTED]
  300. Qt                            Qt                            [CANCEL ][EXISTED]
  301. cmake                         cmake                         [CANCEL ][EXISTED]
  302. prod                          prod                          [CANCEL ][EXISTED]
  303. libtool                       libtool                       [CANCEL ][EXISTED]
  304. Qt.check                      Qt.check                      [CANCEL ][EXISTED]
  305. Qt4.build                     Qt4.build                     [CANCEL ][EXISTED]
  306. Qt4.8.7.build                 Qt4.8.7.build                 [CANCEL ][EXISTED]
  307. QtSoap.build                  QtSoap.build                  [CANCEL ][EXISTED]
  308. qqt.push                      qqt.push                      [CANCEL ][EXISTED]
  309. qqt.pull                      qqt.pull                      [CANCEL ][EXISTED]
  310. qqt.cloc                      qqt.cloc                      [CANCEL ][EXISTED]
  311. android.sdk                   android.sdk                   [CANCEL ][EXISTED]
  312. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>mm translate cmd -a -f
  313. translate: source file   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\pymake.json
  314. translate: source root   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  315. translate: source config is pymake.json
  316. translate: target file   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource\temp-target.json
  317. translate: target root   is R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource
  318. translate: target config is temp-target.json
  319. ---------------------------------------------------------------------
  320. [source] pymake.json          [target] temp-target.json     [status]
  321. command:
  322. test                          test                          [SUCCESS][EXISTED][FORCE]
  323. qqt.build                     qqt.build                     [SUCCESS][EXISTED][FORCE]
  324. qqt.clean                     qqt.clean                     [SUCCESS][EXISTED][FORCE]
  325. Qt                            Qt                            [SUCCESS][EXISTED][FORCE]
  326. cmake                         cmake                         [SUCCESS][EXISTED][FORCE]
  327. prod                          prod                          [SUCCESS][EXISTED][FORCE]
  328. libtool                       libtool                       [SUCCESS][EXISTED][FORCE]
  329. Qt.check                      Qt.check                      [SUCCESS][EXISTED][FORCE]
  330. Qt4.build                     Qt4.build                     [SUCCESS][EXISTED][FORCE]
  331. Qt4.8.7.build                 Qt4.8.7.build                 [SUCCESS][EXISTED][FORCE]
  332. QtSoap.build                  QtSoap.build                  [SUCCESS][EXISTED][FORCE]
  333. qqt.push                      qqt.push                      [SUCCESS][EXISTED][FORCE]
  334. qqt.pull                      qqt.pull                      [SUCCESS][EXISTED][FORCE]
  335. qqt.cloc                      qqt.cloc                      [SUCCESS][EXISTED][FORCE]
  336. android.sdk                   android.sdk                   [SUCCESS][EXISTED][FORCE]
  337. R:\Develop\b0-toolkits\a0-compiler\PyMake\UserSource>



这是程序压缩包 PyMake.zip (4513 K) 下载次数:8 这是程序压缩包。
要经常git pull哦,我最近经常更新这个PyMake。  

好了就这些吧,希望各位搞Qt的同事,搞单片机的同事,搞编译的同事,搞其他语言需要复杂环境的同事,Enjoy it。
只要你需要变化的环境。


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 字节
 
上一个 下一个