diff options
| author | ruki <[email protected]> | 2025-06-26 10:56:34 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-26 10:56:34 +0800 |
| commit | 2fd95e31bfb024029680bdac00298b04badd4578 (patch) | |
| tree | 007603cb3c07be08552a6dd4548c6f8f91f17f35 /xmake/plugins/project/vstudio/impl | |
| parent | 2439edb2dc5f8f2fab753a7688489d99fd45bf7f (diff) | |
| parent | 42e25f69c356dbb014459f472da1e99e27849418 (diff) | |
Merge pull request #6572 from fcying/dev
feat(plugin/project): support gen compile_commands.json for specific target
Diffstat (limited to 'xmake/plugins/project/vstudio/impl')
4 files changed, 18 insertions, 8 deletions
diff --git a/xmake/plugins/project/vstudio/impl/vs200x.lua b/xmake/plugins/project/vstudio/impl/vs200x.lua index d1f220c8a..099b2e224 100644 --- a/xmake/plugins/project/vstudio/impl/vs200x.lua +++ b/xmake/plugins/project/vstudio/impl/vs200x.lua @@ -22,6 +22,7 @@ import("core.project.project") import("vs200x_solution") import("vs200x_vcproj") +import("plugins.project.utils.target_utils", {rootdir = os.programdir()}) -- make vstudio project function make(outputdir, vsinfo) @@ -35,15 +36,16 @@ function make(outputdir, vsinfo) -- make solution vs200x_solution.make(vsinfo) + local project_targets = target_utils.get_project_targets() -- TODO -- disable precompiled header first - for _, target in pairs(project.targets()) do + for _, target in pairs(project_targets) do target:set("pcheader", nil) target:set("pcxxheader", nil) end -- make vsprojs - for _, target in pairs(project.targets()) do + for _, target in pairs(project_targets) do if not target:is_phony() then vs200x_vcproj.make(vsinfo, target) end diff --git a/xmake/plugins/project/vstudio/impl/vs200x_solution.lua b/xmake/plugins/project/vstudio/impl/vs200x_solution.lua index 05f873dcb..d740073b7 100644 --- a/xmake/plugins/project/vstudio/impl/vs200x_solution.lua +++ b/xmake/plugins/project/vstudio/impl/vs200x_solution.lua @@ -21,6 +21,7 @@ -- imports import("core.project.project") import("vsfile") +import("plugins.project.utils.target_utils", {rootdir = os.programdir()}) -- make header function _make_header(slnfile, vsinfo) @@ -35,7 +36,8 @@ function _make_projects(slnfile, vsinfo) local vctool = "8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942" -- make all targets - for targetname, target in pairs(project.targets()) do + local project_targets = target_utils.get_project_targets() + for targetname, target in pairs(project_targets) do if not target:is_phony() then -- enter project @@ -67,7 +69,8 @@ function _make_global(slnfile, vsinfo) -- add project configuration platforms slnfile:enter("GlobalSection(ProjectConfigurationPlatforms) = postSolution") - for targetname, target in pairs(project.targets()) do + local project_targets = target_utils.get_project_targets() + for targetname, target in pairs(project_targets) do if not target:is_phony() then slnfile:print("{%s}.$(mode)|Win32.ActiveCfg = $(mode)|Win32", hash.uuid4(targetname)) slnfile:print("{%s}.$(mode)|Win32.Build.0 = $(mode)|Win32", hash.uuid4(targetname)) diff --git a/xmake/plugins/project/vstudio/impl/vs201x.lua b/xmake/plugins/project/vstudio/impl/vs201x.lua index a10b19d0a..1f3c55a93 100644 --- a/xmake/plugins/project/vstudio/impl/vs201x.lua +++ b/xmake/plugins/project/vstudio/impl/vs201x.lua @@ -40,6 +40,7 @@ import("private.action.run.runenvs") import("actions.config.configfiles", {alias = "generate_configfiles", rootdir = os.programdir()}) import("private.utils.batchcmds") import("plugins.project.utils.target_cmds", {rootdir = os.programdir()}) +import("plugins.project.utils.target_utils", {rootdir = os.programdir()}) function _translate_path(dir, vcxprojdir) if dir == nil then @@ -436,7 +437,8 @@ function make(outputdir, vsinfo) os.cd(project.directory()) -- save targets - for targetname, target in table.orderpairs(project.targets()) do + local project_targets = target_utils.get_project_targets() + for targetname, target in table.orderpairs(project_targets) do -- make target with the given mode and arch targets[targetname] = targets[targetname] or {} diff --git a/xmake/plugins/project/vstudio/impl/vs201x_solution.lua b/xmake/plugins/project/vstudio/impl/vs201x_solution.lua index d4a16c207..74fb963fa 100644 --- a/xmake/plugins/project/vstudio/impl/vs201x_solution.lua +++ b/xmake/plugins/project/vstudio/impl/vs201x_solution.lua @@ -22,6 +22,7 @@ import("core.project.project") import("vsfile") import("vsutils") +import("plugins.project.utils.target_utils", {rootdir = os.programdir()}) -- make header function _make_header(slnfile, vsinfo) @@ -36,7 +37,8 @@ function _make_projects(slnfile, vsinfo) local groups = {} local targets = {} local vctool = "8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942" - for targetname, target in table.orderpairs(project.targets()) do + local project_targets = target_utils.get_project_targets() + for targetname, target in table.orderpairs(project_targets) do -- we need to set startup project for default or binary target -- @see https://github.com/xmake-io/xmake/issues/1249 if target:get("default") == true then @@ -99,7 +101,8 @@ function _make_global(slnfile, vsinfo) -- add project configuration platforms slnfile:enter("GlobalSection(ProjectConfigurationPlatforms) = postSolution") - for targetname, target in table.orderpairs(project.targets()) do + local project_targets = target_utils.get_project_targets() + for targetname, target in table.orderpairs(project_targets) do for _, mode in ipairs(vsinfo.modes) do for _, arch in ipairs(vsinfo.archs) do local vs_arch = vsutils.vsarch(arch) @@ -118,7 +121,7 @@ function _make_global(slnfile, vsinfo) -- add project groups slnfile:enter("GlobalSection(NestedProjects) = preSolution") local subgroups = {} - for targetname, target in table.orderpairs(project.targets()) do + for targetname, target in table.orderpairs(project_targets) do local group_path = target:get("group") if group_path then -- target -> group |
