Skip to content
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

打印消息 #33

Closed
baisai opened this issue Sep 23, 2016 · 2 comments
Closed

打印消息 #33

baisai opened this issue Sep 23, 2016 · 2 comments

Comments

@baisai
Copy link
Contributor

baisai commented Sep 23, 2016

有没有能够打印消息的接口啊
就类似cmake的MESSAGE
我用print的话....会输出多次消息,而且并不能输出内建变量

@waruqi
Copy link
Member

waruqi commented Sep 23, 2016

像print这种在外层仅仅只是为了个人调试,用来打印提示信息,请在自定义脚本中(这个里面是支持内建变量的)使用。。。

xmake.lua 描述文件为了使平常用户更加方便简洁的编写工程文件,将其分成两种模式:

  • 外层描述作用域
  • 内层自定义脚本作用域

外层描述作用域

仅通过 set_xxx, add_xxx 这类简单的api进行工程描述,让xmake尽量看上去不依赖某种语言和语法,仅仅像是在修改配置。。

例如:

-- 外层作用域

target("xxx")
    set_kind("static")

所以在外层描述作用域上,对很多lua的特性和接口都做了限制,灵活性上稍有欠缺,目的是为了大部分的工程描述,保持尽量的简洁可读。。

此作用域主要以描述为主,开放的其他api很有限(都是些readonly api,例如:print, os.getenv(), string, table ..),也仅仅只是为了控制描述逻辑,像print这种仅仅作为个人调试的辅助工具,尽量不要用来做为除调试以外的其他用途。。

内层自定义脚本作用域

此作用,就是在在定义脚本代码 function () end 中的作用域,例如:

-- 外层作用域

target("zzz")

    -- 外层作用域

    after_build(function ()

          -- 内层作用域,支持内建变量
          print("$(projectdir)")
    end)

task("hello")

    on_run(function()

          -- 内层作用域
          print("$(projectdir)")
    end)

在内层作用域,也就是自定义脚本中,主要针对一些高端用户,需要更加复杂的描述工程逻辑需求,在这个作用域里面,可以使用各种内建模块、扩展模块(需要import导入),以及插件调用。。

基本上就是在写lua脚本,像printos.cp的路径,等都是支持 内建变量的。。例如:

`os.cp("$(buildir)/xxx", "$(tmpdir)/xxx")

并且此作用域,为了简化脚本,采用异常中断的方式,简化脚本代码,使得更加可读,大部分api操作,调用后,不需要考虑是否返回失败,去判断失败逻辑,执行失败后,直接回抛异常中断xmake,显示error信息。。

@baisai
Copy link
Contributor Author

baisai commented Sep 23, 2016

好的,谢谢

@baisai baisai closed this as completed Sep 23, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants