summaryrefslogtreecommitdiff
path: root/xmake/plugins
diff options
context:
space:
mode:
authorruki <[email protected]>2025-04-08 00:41:42 +0800
committerruki <[email protected]>2025-04-08 15:31:58 +0800
commitf72d519dfe7b3a3744660ed15c620dbd5344c16c (patch)
tree69cf29e05d1554b93d94c653938e15fda684bffa /xmake/plugins
parent6fc28a78bf95490b5c230a42c0f4a40ab5aad2e4 (diff)
prepare targets in cmakelists generator
Diffstat (limited to 'xmake/plugins')
-rw-r--r--xmake/plugins/project/cmake/cmakelists.lua19
1 files changed, 8 insertions, 11 deletions
diff --git a/xmake/plugins/project/cmake/cmakelists.lua b/xmake/plugins/project/cmake/cmakelists.lua
index 22edabcd2..464101268 100644
--- a/xmake/plugins/project/cmake/cmakelists.lua
+++ b/xmake/plugins/project/cmake/cmakelists.lua
@@ -31,6 +31,7 @@ import("lib.detect.find_tool")
import("private.utils.batchcmds")
import("private.utils.rule_groups")
import("private.utils.target", {alias = "target_utils"})
+import("private.action.build.target", {alias = "target_buildutils"})
import("plugins.project.utils.target_cmds", {rootdir = os.programdir()})
import("rules.c++.modules.modules_support.compiler_support", {alias = "module_compiler_support", rootdir = os.programdir()})
@@ -298,6 +299,12 @@ function _get_flags_from_target(target, flagkind)
return results
end
+-- prepare targets
+function _prepare_targets()
+ local targets_root = target_buildutils.get_root_targets()
+ target_buildutils.run_targetjobs(targets_root, {job_kind = "prepare"})
+end
+
-- set compiler
function _set_compiler(cmakelists)
if config.get("toolchain") then
@@ -1331,21 +1338,11 @@ function _generate_cmakelists(cmakelists, outputdir)
end
end
--- make
function make(outputdir)
-
- -- enter project directory
local oldir = os.cd(os.projectdir())
-
- -- open the cmakelists
local cmakelists = io.open(path.join(outputdir, "CMakeLists.txt"), "w")
-
- -- generate cmakelists
+ _prepare_targets()
_generate_cmakelists(cmakelists, outputdir)
-
- -- close the cmakelists
cmakelists:close()
-
- -- leave project directory
os.cd(oldir)
end