-
-
Notifications
You must be signed in to change notification settings - Fork 780
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
local 变量的问题 #35
Comments
你这边定义的dirs是个 dictionary 类型,需要 用 pairs 来遍历,ipairs 是用来遍历数组的。。这个你可以百度下 lua 中 pairs 和 ipairs的使用区别 你改成: for k, v pairs(dirs) do
end 试试,如果调试的话,你可以使用下面的调用,打印变量的所有数据,包括数组和字典: table.dump(dirs) |
还有这里判断各种option去设置不同的
target(name)
-- set kind
set_kind("shared")
add_includedirs(prefixInclude)
add_options("LightInk3D2D")
on_build(function()
-- 导入配置模块
import("core.project.config")
-- 加载配置
config.load()
-- 判断选项是否被设置,也就是,是否设置了:xmake f --LightInk3D2D=y 后,进行的build
if config.get("LightInk3D2D") then
end
end) 还有像这种 写死的 : local prefixInclude = "../../include/ThirdParty/"
local prefixSrc = "../../src/ThirdParty/" 也可以定义成 option ,然后通过 "$(prefixSrc)" 或者 option("prefixSrc")
set_default("../../src/ThirdParty/")
set_showmenu(true)
set_description("sssss") -- 可以在这适当加些菜单描述,这样xmake f --help的时候,可以看到选项的说明
option("prefixInclude")
set_default("../../include/ThirdParty/")
set_showmenu(true) 这样路径就是可配置的: xmake f --prefixSrc="../../src/ThirdParty/" --prefixInclude="../../include/ThirdParty/" |
add_subdirs(k) 还有这个属于全局作用域,on_build属于 target 内部作用域,像 target("")
add_subdirs("")
on_build(function() end) 这种 add_subdirs放置在 target中间,虽然xmake兼容支持的,但是对用户来讲,容易产生误导,这个我文档中可能没详细说明,不好意思,建议改成: -- 一个完整的子工程目标设置
target("")
on_build(function() end)
-- 包含其他子工程目录
add_subdirs("") |
好吧,我好像一直没有注意作用域的问题.. |
add_subdirs 仅仅是用来包含子工程文件的,一般不是用来区分编译不同模块的。。 因为子工程xmake.lua 也可以定义option,这样通过option来区分调用add_subdirs的话,就会出现鸡生蛋的问题了。。。 一般做法是,add_subdirs照样包含全部子工程模块的xmake.lua ,不用做区分,你可以在子工程的xmake.lua里面定义个 option ,然后通过 区分target 来处理,例如: 子模块的xmake.lua -- 定义个选项开关
option("enable_module")
....
-- 当前编译是否启用了此模块target?
if is_option("enable_module") then
-- 只有选项启用后,才会去定义这个子模块目标工程,如果没定义的话,也就不会编译进去了
target("xxxx")
...
end
|
还有中更加方便的方式是,option什么都不需要定义,全部子工程模块target定义好后,不敲 -- 重建指定子工程模块 (注:由于第一个参数被action占用了,不能直接执行 xmake targetname)
xmake -r targetname clean, package 等也是可以指定target运行的 -- 清理指定子工程模块
xmake c targetname
xmake clean targetname
-- 打包指定模块
xmake p targetname
xmake package targetname |
然后target之间可以通过 add_deps("") 添加依赖关系,级联编译。。 |
好的,谢谢.... |
文档这样用也是可以的 不过option的定义必须放根xmake.lua中去 里面api我更新下 应该是is_option |
好的,谢谢 |
name变量可以访问,但是dirs好像访问不了
The text was updated successfully, but these errors were encountered: