diff options
| author | ruki <[email protected]> | 2016-07-04 16:25:57 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2016-07-04 16:26:02 +0800 |
| commit | 721ea838ab717b2a4b477cc239e09b2a5de51878 (patch) | |
| tree | 3069b7741a960ab041e50b364a9dcdb8c13a580a | |
| parent | 1ec6011956e78dedd7eea87f484b0a3c56cfef27 (diff) | |
optimizate to clean
| -rwxr-xr-x | xmake/actions/clean/main.lua | 14 | ||||
| -rwxr-xr-x | xmake/actions/package/main.lua | 6 |
2 files changed, 16 insertions, 4 deletions
diff --git a/xmake/actions/clean/main.lua b/xmake/actions/clean/main.lua index 0ac4d7819..18ddea50d 100755 --- a/xmake/actions/clean/main.lua +++ b/xmake/actions/clean/main.lua @@ -95,11 +95,17 @@ function _clean_target(target) script(target) end end + end -- clean the given target and all dependent targets function _clean_target_and_deps(target) + -- this target have been finished? + if _g.finished[target:name()] then + return + end + -- remove the target _clean_target(target) @@ -107,6 +113,9 @@ function _clean_target_and_deps(target) for _, dep in ipairs(target:get("deps")) do _clean_target_and_deps(project.target(dep)) end + + -- finished + _g.finished[target:name()] = true end -- clean the given target @@ -122,7 +131,7 @@ function _clean(targetname) -- clean targets for _, target in pairs(project.targets()) do - _clean_target(target) + _clean_target_and_deps(target) end end @@ -148,6 +157,9 @@ function main() -- config it first task.run("config", {target = targetname}) + -- init finished states + _g.finished = {} + -- enter project directory local olddir = os.cd(project.directory()) diff --git a/xmake/actions/package/main.lua b/xmake/actions/package/main.lua index 453725e13..42af3ca0a 100755 --- a/xmake/actions/package/main.lua +++ b/xmake/actions/package/main.lua @@ -187,12 +187,12 @@ function main() -- get the target name local targetname = option.get("target") - -- init finished states - _g.finished = {} - -- build it first task.run("build", {target = targetname}) + -- init finished states + _g.finished = {} + -- package all? if targetname == "all" then for _, target in pairs(project.targets()) do |
