| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- -- includes("AV")
- -- 设置项目信息
- set_project("AV_Framework")
- set_version("1.0.0")
- set_languages("c++17")
- -- 设置编译模式
- add_rules("mode.debug", "mode.release")
- -- 设置编译选项
- if is_plat("windows") then
- add_cxflags("/W3", "/utf-8")
- add_defines("_CRT_SECURE_NO_WARNINGS")
- else
- add_cxflags("-Wall", "-Wextra")
- end
- target("qt_widgetapp")
- add_rules("qt.widgetapp")
- set_rundir("$(projectdir)/ci_build")
- on_build(function (target)
- print("build it")
- import("core.base.hashset")
- import("private.action.run.runenvs", {try = true})
- if not runenvs then
- import("private.action.run.make_runenvs")
- end
- -- 获取当前 target 的环境
- function _add_target_pkgenvs(target, pkgenvs, targets_added)
- if targets_added[target:name()] then
- return
- end
- targets_added[target:name()] = true
- table.join2(pkgenvs, target:pkgenvs())
- for _, dep in ipairs(target:orderdeps()) do
- _add_target_pkgenvs(dep, pkgenvs, targets_added)
- end
- end
- local pkgenvs = {}
- _add_target_pkgenvs(target, pkgenvs, {})
- -- 获取当前系统的环境
- local addrunenvs, setrunenvs = runenvs and runenvs.make(target) or make_runenvs(target)
- local runenvs = { add = addrunenvs, set = setrunenvs }
- for name, env in pairs(pkgenvs) do
- runenvs.add[name] = runenvs.add[name] or {}
- table.append(runenvs.add[name], env)
- end
- -- PATH 环境整合 添加 到系统
- if type(runenvs.add) == "table" then
- for key, value in pairs(runenvs.add) do
- --print(key, value)
- for i, v in pairs(value) do
- os.addenvs({[key] = v})
- end
- end
- end
- -- key: LIB PATH
- function add_toolchain_envs(key)
- local env_table = {}
- local search_env_set = hashset.new()
- local function insert_include(dir)
- if not path.is_absolute(dir) then
- dir = path.absolute(dir, os.projectdir())
- end
- if search_env_set:insert(dir) then
- table.insert(env_table, dir)
- end
- end
- for _, toolchain in ipairs(target:toolchains()) do
- local runenvs = toolchain:runenvs()
- if runenvs and runenvs[key] then
- for _, env in ipairs(path.splitenv(runenvs[key])) do
- insert_include(env)
- end
- end
- end
- -- INCLUDE 环境整合
- for _, value in pairs(env_table) do
- os.addenvs({[key] = value})
- end
- end
- -- 添加工具链需要的环境信息
- add_toolchain_envs("LIBPATH")
- add_toolchain_envs("LIB")
- add_toolchain_envs("INCLUDE")
- local envs = os.getenvs()
- local rundir = path.join(os.projectdir(), "ci_build")
-
- -- 确保运行目录存在
- os.mkdir(rundir)
- os.execv("qmake", {"-version"}, {envs = envs, curdir = rundir})
- -- print(envs)
- local proPath = path.join(os.projectdir(), "LearningSmartClient.pro")
- print("build:", proPath)
- if is_mode("debug") then
- os.execv("qmake", {proPath, "-spec", "win32-msvc", "CONFIG+=debug", "CONFIG+=qml_debug"}, {envs = envs, curdir = rundir})
- elseif is_mode("release") then
- os.execv("qmake", {proPath, "-spec", "win32-msvc", "CONFIG+=release"}, {envs = envs, curdir = rundir})
- else
- print("no supp QMake")
- end
- local jom = "D:\\Qt\\Tools\\QtCreator\\bin\\jom\\jom.exe"
- if is_mode("debug") then
- os.execv(jom, {"-f", "Makefile.Debug", "qmake_all"}, {envs = envs, curdir = rundir})
- elseif is_mode("release") then
- os.execv(jom, {"-f", "Makefile.Release", "qmake_all"}, {envs = envs, curdir = rundir})
- else
- print("no supp mode Makefile")
- end
- os.execv(jom, {"-j24"}, {envs = envs, curdir = rundir})
- end)
- target_end()
|