refactor xmake scripts
This commit is contained in:
@@ -18,4 +18,4 @@ GODOT_PROJECT_FOLDER = "demo"
|
||||
PUBLISH_FOLDER = "publish"
|
||||
|
||||
|
||||
includes("godot.lua")
|
||||
includes("xmake/godot.lua")
|
||||
15
xmake/editor.lua
Normal file
15
xmake/editor.lua
Normal file
@@ -0,0 +1,15 @@
|
||||
target("Editor")
|
||||
set_default(false)
|
||||
|
||||
-- Disable building
|
||||
on_build((function() end))
|
||||
|
||||
on_run(
|
||||
(function(godot_project_folder)
|
||||
return function(target)
|
||||
local project_file = path.join(godot_project_folder, "project.godot")
|
||||
os.execv("echo", {"godot", project_file})
|
||||
os.exec("godot " .. project_file)
|
||||
end
|
||||
end)(GODOT_PROJECT_FOLDER)
|
||||
)
|
||||
26
xmake/godot.lua
Normal file
26
xmake/godot.lua
Normal file
@@ -0,0 +1,26 @@
|
||||
------- project settings -------
|
||||
|
||||
-- project name
|
||||
set_project(PROJECT_NAME)
|
||||
|
||||
-- project version
|
||||
set_version(VERSION)
|
||||
|
||||
-- min version of xmake we need to run
|
||||
-- NOTE: this is the version i used to develop this template, may not 100% correct
|
||||
set_xmakever("2.9.0")
|
||||
|
||||
add_rules("mode.debug", "mode.release")
|
||||
|
||||
-- c++17 is required for godot 4.x, we use c++20 here
|
||||
set_languages("c++20")
|
||||
|
||||
-- use latest 4.x version by default
|
||||
add_requires("godotcpp4")
|
||||
|
||||
|
||||
includes("tasks.lua")
|
||||
|
||||
includes("target.lua")
|
||||
|
||||
includes("editor.lua")
|
||||
65
xmake/target.lua
Normal file
65
xmake/target.lua
Normal file
@@ -0,0 +1,65 @@
|
||||
-- more on https://xmake.io/#/manual/project_target
|
||||
target(PROJECT_NAME)
|
||||
set_kind("shared")
|
||||
set_default(true)
|
||||
|
||||
add_packages("godotcpp4")
|
||||
|
||||
-- more on https://xmake.io/#/manual/project_target?id=targetadd_files
|
||||
add_files("../src/**.cpp")
|
||||
|
||||
-- change the output name
|
||||
set_basename(PROJECT_NAME .. ".$(os)_$(mode)_$(arch)")
|
||||
|
||||
-- libraries will saved in os level folder
|
||||
set_targetdir("../" .. GODOT_PROJECT_FOLDER .. "/lib")
|
||||
|
||||
-- where to save .obj files
|
||||
-- we use a seprate folder, so that it will not populate the targer folder
|
||||
set_objectdir("../build/.objs")
|
||||
|
||||
-- where .d files are saved
|
||||
set_dependir("../build/.deps")
|
||||
|
||||
-- set_optimize("smallest")
|
||||
|
||||
-- handlers
|
||||
|
||||
-- before_run(function (target) end)
|
||||
-- after_run(function (target) end)
|
||||
-- before_build(function (target) end)
|
||||
-- after_build(function (target) end)
|
||||
-- before_clean(function (target) end)
|
||||
-- after_clean(function (target) end)
|
||||
|
||||
on_run(
|
||||
(function(godot_project_folder)
|
||||
return function(target)
|
||||
os.execv("echo", {"godot --path", godot_project_folder})
|
||||
os.exec("godot --path " .. godot_project_folder)
|
||||
end
|
||||
end)(GODOT_PROJECT_FOLDER)
|
||||
)
|
||||
|
||||
on_package(function(target)
|
||||
import("core.base.task")
|
||||
|
||||
target_platform = "Unknown"
|
||||
|
||||
if is_plat("windows") then
|
||||
target_platform = "Windows Desktop"
|
||||
elseif is_plat("macosx") then
|
||||
target_platform = "macOS"
|
||||
elseif is_plat("linux") then
|
||||
target_platform = "Linux/X11"
|
||||
elseif is_plat("android") then
|
||||
target_platform = "Android"
|
||||
end
|
||||
|
||||
task.run("export", {}, target_platform)
|
||||
end)
|
||||
|
||||
after_clean(function (target)
|
||||
import("core.base.task")
|
||||
task.run("clean-publish")
|
||||
end)
|
||||
@@ -1,27 +1,3 @@
|
||||
------- project settings -------
|
||||
|
||||
-- project name
|
||||
set_project(PROJECT_NAME)
|
||||
|
||||
-- project version
|
||||
set_version(VERSION)
|
||||
|
||||
-- min version of xmake we need to run
|
||||
-- NOTE: this is the version i used to develop this template, may not 100% correct
|
||||
set_xmakever("2.9.0")
|
||||
|
||||
add_rules("mode.debug", "mode.release")
|
||||
|
||||
-- c++17 is required for godot 4.x, we use c++20 here
|
||||
set_languages("c++20")
|
||||
|
||||
-- use latest 4.x version by default
|
||||
add_requires("godotcpp4")
|
||||
|
||||
|
||||
------- custom tasks -------
|
||||
|
||||
|
||||
-- NOTE:
|
||||
-- xmake cannot accept the global variables in on_xxx functions, so we use a wrapper function to bind it
|
||||
|
||||
@@ -226,90 +202,3 @@ android.release.arm64 = "res://lib/libProjectName.android_release_arm64.so"
|
||||
description = "Generate gdextension file",
|
||||
}
|
||||
task_end()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
------- output settings -------
|
||||
|
||||
-- more on https://xmake.io/#/manual/project_target
|
||||
target(PROJECT_NAME)
|
||||
set_kind("shared")
|
||||
set_default(true)
|
||||
|
||||
add_packages("godotcpp4")
|
||||
|
||||
-- more on https://xmake.io/#/manual/project_target?id=targetadd_files
|
||||
add_files("src/*.cpp")
|
||||
|
||||
-- change the output name
|
||||
set_basename(PROJECT_NAME .. ".$(os)_$(mode)_$(arch)")
|
||||
|
||||
-- libraries will saved in os level folder
|
||||
set_targetdir(GODOT_PROJECT_FOLDER .. "/lib")
|
||||
|
||||
-- where to save .obj files
|
||||
-- we use a seprate folder, so that it will not populate the targer folder
|
||||
set_objectdir("build/.objs")
|
||||
|
||||
-- where .d files are saved
|
||||
set_dependir("build/.deps")
|
||||
|
||||
-- set_optimize("smallest")
|
||||
|
||||
-- handlers
|
||||
|
||||
-- before_run(function (target) end)
|
||||
-- after_run(function (target) end)
|
||||
-- before_build(function (target) end)
|
||||
-- after_build(function (target) end)
|
||||
-- before_clean(function (target) end)
|
||||
-- after_clean(function (target) end)
|
||||
|
||||
on_run(
|
||||
(function(godot_project_folder)
|
||||
return function(target)
|
||||
os.execv("echo", {"godot --path", godot_project_folder})
|
||||
os.exec("godot --path " .. godot_project_folder)
|
||||
end
|
||||
end)(GODOT_PROJECT_FOLDER)
|
||||
)
|
||||
|
||||
on_package(function(target)
|
||||
import("core.base.task")
|
||||
|
||||
target_platform = "Unknown"
|
||||
|
||||
if is_plat("windows") then
|
||||
target_platform = "Windows Desktop"
|
||||
elseif is_plat("macosx") then
|
||||
target_platform = "macOS"
|
||||
elseif is_plat("linux") then
|
||||
target_platform = "Linux/X11"
|
||||
elseif is_plat("android") then
|
||||
target_platform = "Android"
|
||||
end
|
||||
|
||||
task.run("export", {}, target_platform)
|
||||
end)
|
||||
|
||||
after_clean(function (target)
|
||||
import("core.base.task")
|
||||
task.run("clean-publish")
|
||||
end)
|
||||
|
||||
|
||||
target("Editor")
|
||||
set_default(false)
|
||||
-- Disable building
|
||||
on_build((function() end))
|
||||
on_run(
|
||||
(function(godot_project_folder)
|
||||
return function(target)
|
||||
local project_file = path.join(godot_project_folder, "project.godot")
|
||||
os.execv("echo", {"godot", project_file})
|
||||
os.exec("godot " .. project_file)
|
||||
end
|
||||
end)(GODOT_PROJECT_FOLDER)
|
||||
)
|
||||
Reference in New Issue
Block a user