summaryrefslogtreecommitdiff
path: root/xmake/plugins
diff options
context:
space:
mode:
authorruki <[email protected]>2025-12-29 11:22:53 +0800
committerGitHub <[email protected]>2025-12-29 11:22:53 +0800
commit7c06c581c3f99a3eda87d88a334e42802175ddfd (patch)
treebb6e90071765465d8fb5e6e87fe2a3d94158f0bf /xmake/plugins
parent399988ff7a79d7d9ee994c8911bf6e69588dd7c5 (diff)
parent34c820992ce4dd7a11ed644f7ab253a98466c54d (diff)
Merge pull request #7172 from xmake-io/modules
prepare test targets in compile_commands
Diffstat (limited to 'xmake/plugins')
-rw-r--r--xmake/plugins/project/clang/compile_commands.lua33
-rw-r--r--xmake/plugins/project/utils/target_cmds.lua4
2 files changed, 29 insertions, 8 deletions
diff --git a/xmake/plugins/project/clang/compile_commands.lua b/xmake/plugins/project/clang/compile_commands.lua
index a017b4a32..4f01354fa 100644
--- a/xmake/plugins/project/clang/compile_commands.lua
+++ b/xmake/plugins/project/clang/compile_commands.lua
@@ -276,6 +276,23 @@ function _add_target(jsonfile, target)
os.setenvs(oldenvs)
end
+-- get test targets
+-- https://github.com/xmake-io/xmake/issues/4750
+function _get_test_targets()
+ local test_targets = _g.test_targets
+ if test_targets == nil then
+ test_targets = {}
+ for _, test in pairs(test_action.get_tests()) do
+ local target = test.target
+ if not target:is_phony() then
+ table.insert(test_targets, target)
+ end
+ end
+ _g.test_targets = test_targets
+ end
+ return test_targets
+end
+
-- add targets
function _add_targets(jsonfile)
jsonfile:print("[")
@@ -288,15 +305,19 @@ function _add_targets(jsonfile)
end
end
-- https://github.com/xmake-io/xmake/issues/4750
- for _, test in pairs(test_action.get_tests()) do
- local target = test.target
- if not target:is_phony() then
- _add_target(jsonfile, target)
- end
+ for _, target in ipairs(_get_test_targets()) do
+ _add_target(jsonfile, target)
end
jsonfile:print("]")
end
+-- prepare targets
+function _prepare_targets()
+ target_cmds.prepare_targets()
+ -- https://github.com/xmake-io/xmake/issues/7166
+ target_cmds.prepare_targets(_get_test_targets())
+end
+
-- generate compilation databases for clang-based tools(compile_commands.json)
--
-- references:
@@ -308,7 +329,7 @@ function make(outputdir)
local oldir = os.cd(os.projectdir())
local jsonfile = io.open(path.join(outputdir, "compile_commands.json"), "w")
os.setenv("XMAKE_IN_COMPILE_COMMANDS_PROJECT_GENERATOR", "true")
- target_cmds.prepare_targets()
+ _prepare_targets()
_add_targets(jsonfile)
jsonfile:close()
os.setenv("XMAKE_IN_COMPILE_COMMANDS_PROJECT_GENERATOR", nil)
diff --git a/xmake/plugins/project/utils/target_cmds.lua b/xmake/plugins/project/utils/target_cmds.lua
index 25413912a..7ea3a13a0 100644
--- a/xmake/plugins/project/utils/target_cmds.lua
+++ b/xmake/plugins/project/utils/target_cmds.lua
@@ -27,8 +27,8 @@ import("private.utils.batchcmds")
import("private.action.build.target", {alias = "target_buildutils"})
-- prepare targets
-function prepare_targets()
- local targets_root = target_buildutils.get_root_targets()
+function prepare_targets(targets)
+ local targets_root = targets or target_buildutils.get_root_targets()
target_buildutils.run_targetjobs(targets_root, {job_kind = "prepare", for_generator = true, jobs = os.default_njob()})
end