summaryrefslogtreecommitdiff
path: root/xmake/plugins/project/vstudio/impl/vs201x.lua
diff options
context:
space:
mode:
Diffstat (limited to 'xmake/plugins/project/vstudio/impl/vs201x.lua')
-rw-r--r--xmake/plugins/project/vstudio/impl/vs201x.lua30
1 files changed, 9 insertions, 21 deletions
diff --git a/xmake/plugins/project/vstudio/impl/vs201x.lua b/xmake/plugins/project/vstudio/impl/vs201x.lua
index b6b2e11d7..e3b9ddc95 100644
--- a/xmake/plugins/project/vstudio/impl/vs201x.lua
+++ b/xmake/plugins/project/vstudio/impl/vs201x.lua
@@ -39,7 +39,6 @@ import("private.action.require.install", {alias = "install_requires"})
import("private.action.run.runenvs")
import("actions.config.configfiles", {alias = "generate_configfiles", rootdir = os.programdir()})
import("private.utils.batchcmds")
-import("private.utils.rule_groups")
import("plugins.project.utils.target_cmds", {rootdir = os.programdir()})
function _translate_path(dir, vcxprojdir)
@@ -132,24 +131,18 @@ function _make_custom_commands(target, vcxprojdir)
return _translate_path(p, vcxprojdir)
end)
- -- build sourcebatch groups first
- local sourcegroups = rule_groups.build_sourcebatch_groups(target, target:sourcebatches())
-
-- ignore c++ modules rules
local ignored_rules = _get_cxxmodules_rules()
-- add before commands
-- we use irpairs(groups), because the last group that should be given the highest priority.
- local cmds_before = {}
- target_cmds.get_target_buildcmd(target, cmds_before, {suffix = "before", ignored_rules = ignored_rules})
- target_cmds.get_target_buildcmd_sourcegroups(target, cmds_before, sourcegroups, {suffix = "before", ignored_rules = ignored_rules})
- -- rule.on_buildcmd_files should also be executed before building the target, as cmake PRE_BUILD does not work.
- target_cmds.get_target_buildcmd_sourcegroups(target, cmds_before, sourcegroups, {ignored_rules = ignored_rules})
+ -- rule.on_buildcmd_files should also be executed before building the target
+ local cmds_before = target_cmds.get_target_buildcmds(target, {ignored_rules = ignored_rules, stages = {"before", "on"}})
+ _add_target_custom_commands_for_batchcmds(cmakelists, target, outputdir, "before", cmds_before)
-- add after commands
- local cmds_after = {}
- target_cmds.get_target_buildcmd_sourcegroups(target, cmds_after, sourcegroups, {suffix = "after", ignored_rules = ignored_rules})
- target_cmds.get_target_buildcmd(target, cmds_after, {suffix = "after", ignored_rules = ignored_rules})
+ local cmds_after = target_cmds.get_target_buildcmds(target, {ignored_rules = ignored_rules, stages = {"after"}})
+ _add_target_custom_commands_for_batchcmds(cmakelists, target, outputdir, "after", cmds_after)
local commands = {}
for _, cmd in ipairs(cmds_before) do
@@ -386,17 +379,14 @@ end
-- make vstudio project
function make(outputdir, vsinfo)
-
- -- enter project directory
local oldir = os.cd(project.directory())
- -- init solution directory
- vsinfo.solution_dir = path.join(outputdir, "vs" .. vsinfo.vstudio_version)
+ -- prepare targets
+ target_cmds.prepare_targets()
- -- init modes
+ -- init vsinfo
+ vsinfo.solution_dir = path.join(outputdir, "vs" .. vsinfo.vstudio_version)
vsinfo.modes = _make_vsinfo_modes()
-
- -- init archs
vsinfo.archs = _make_vsinfo_archs()
-- load targets
@@ -519,7 +509,5 @@ function make(outputdir, vsinfo)
-- clear local cache
_clear_cache()
-
- -- leave project directory
os.cd(oldir)
end