内置变量与原生shell脚本运行

xmake在xmake.lua中提供了 $(varname) 的语法,来支持内置变量的获取,例如:

add_cxflags("-I$(buildir)")
它将会在在实际编译的时候,将内置的 buildir 变量转换为实际的构建输出目录:-I./build

并且这些变量在自定义脚本中,也是可以支持的,例如:

target("test")
after_build(target)
print("build ok for $(plat)!")
end
这将会在编译完后,输出:

build ok for macosx!
这些内置变量,大部分都是通过配置的时候,缓存的配置参数中获取,例如:

$ xmake config --plat=macosx
也有些内置变量,不需要通过配置中获取到,例如:

print("$(os)")
print("$(host)")
print("$(tmpdir)")
print("$(curdir)")
等等,这些都是为了让xmake的语法更加简洁,例如操作文件复制的时候,只需要:

os.cp("$(projectdir)/file", "$(tmpdir)")
而不需要:

-- 导入工程模块
import("core.project.project")

-- 复制文件
os.cp(path.join(project.directory(), "file"), os.tmpdir())
这样比较繁琐下,但是有些复杂功能,可能还是得这么处理比较灵活,这就得看具体需求了。。

除了内置的变量处理,xmake还支持原生shell的运行,来处理一些xmake内置不支持的功能

例如,现在有个需求,我想用在编译linux程序时,调用pkg-config获取到实际的第三方链接库名,可以这么做:

target("test")
set_kind("binary")
if is_plat("linux") then
add_ldflags("$(shell pkg-config --libs sqlite3)")
end
当然,xmake有自己的自动化第三库检测机制,一般情况下不需要这么麻烦,而且lua自身的脚本化已经很不错了。。

但是这个例子可以说明,xmake是完全可以通过原生shell,来与一些第三方的工具进行配合使用。。

  1. XMake项目主页

  2. XMake项目详情

  3. XMake项目源码

  4. XMake项目文档

关键字:lua, shell, 变量, 跨平台

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部