diff options
| author | ruki <[email protected]> | 2021-01-18 14:25:05 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-01-18 14:25:05 +0800 |
| commit | 3ce4a0366dc45361ee2ed1881391589cdf1b5c26 (patch) | |
| tree | 02f415db4d4ad83fe2bb7ea2aaa360b0ae9a9d2d | |
| parent | 49f0297ee150cca94803fb6b83dc048c9881b2c5 (diff) | |
| parent | b2b1b52eb1286d1d7631c4e316b5785b8cf08e95 (diff) | |
Merge pull request #1199 from knightjun/dev
Recursively add target dependency env
| -rw-r--r-- | xmake/actions/run/main.lua | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/xmake/actions/run/main.lua b/xmake/actions/run/main.lua index a9a838651..88156f5b5 100644 --- a/xmake/actions/run/main.lua +++ b/xmake/actions/run/main.lua @@ -89,15 +89,29 @@ function _on_run_target(target) _do_run_target(target) end +-- recursively target add env +function _add_target_pkgenvs(target, oldenvs, targets_added) + if targets_added[target:name()] then + return + end + targets_added[target:name()] = true + for name, values in pairs(target:pkgenvs()) do + if not oldenvs[name] then + oldenvs[name] = os.getenv(name) + end + os.addenv(name, unpack(values)) + end + for _, dep in ipairs(target:orderdeps()) do + _add_target_pkgenvs(dep, oldenvs, targets_added) + end +end + -- run the given target function _run(target) -- enter the environments of the target packages local oldenvs = {} - for name, values in pairs(target:pkgenvs()) do - oldenvs[name] = os.getenv(name) - os.addenv(name, unpack(values)) - end + _add_target_pkgenvs(target, oldenvs, {}) -- the target scripts local scripts = |
