Replies: 5 comments 4 replies
-
参考下 https://github.com/idealvin/co/blob/4a33724b91edabce231e699464fc775db1bc547c/test/xmake.lua#L13 |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
不考虑,每个用户需求各不相同,这种自己搞下也没几行
仔细看下文档描述域,脚本域说明。描述域仅用于简单配置,是会执行解析多次,正常。 复杂脚本请走脚本域 |
Beta Was this translation helpful? Give feedback.
-
另外,这个实现有点复杂了,有 path.basename, path.extension, path.directory, path.filename 直接可用,文档里面也有接口说明 |
Beta Was this translation helpful? Give feedback.
-
我的意思不是merge我这段代码,这个代码不够健壮也不够灵活,但这类case其实挺多,比如 for _, fi in get_files("src/**.h") do
rename(fi.path,replace_suffix(fi.path,".hpp"))
end
for _, fi in get_files("image1/*.jpg", "image2/*.png") do
cmd("tool/2webp", fi.path, "image3/"..fi.basename..".webp")
end 和提供的 https://xmake.io/#/zh-cn/guide/syntax_description?id=%e6%8f%8f%e8%bf%b0%e5%9f%9f 这个文档写的很好,但对于不懂lua的人比如我,其实没太大帮助,因为建立不起来概念。解决了这个问题再看,我才明白文档表达的概念和细节。 书的代码,很多都是类似这样的结构,比如 for _, fi in get_files("examples/**.c") do
target(basename(fi.path))
add_files(fi.dir.."*.cpp")
set_rundir(fi.dir)
end
或者
for _, dir in get_leaf_dirs("examples/") do
target(dir.basename)
add_files(dir.path.."*.cpp")
set_rundir(dir.path)
end 同样 raylib 和 raygui 的 examle 结构还有点差异,一个是所有demo_xxx.c混在一个目录,一个是每个demo一个目录。 for _, fi in get_files("examples/**.c") do
target(fi.basename)
add_files(fi.path)
set_rundir(fi.dir)
end xmake 能集成这些简单函数好处是可以统一规范化和简化脚本,不需要用户重复编写查询 lua doc,可读性也不错。xmake来保障这种遍历逻辑的健壮性,还搞不定再落到 lua api 解决。 anyway,个人意见,感谢提供这么好的工具,也感谢指导! |
Beta Was this translation helpful? Give feedback.
-
希望支持类似 foreach 这样的循环控制,能动态批量定义 target
需求描述
很多项目自带example,数目可能达到上百。
以raylib为例,examples目录结构类似这样:
每个 demoXXX.c 生成一个执行文件 demoXXX.exe
它的 CMakeLists 是用这样的语句处理:
这个
${example_sources}
中的条目也是通过另一个 foreach 读取指定的文件夹读到的。期望的需求是:xmake.lua 可以根据给定文件夹,读取文件列表,动态生成等效几百个类似下面的配置:
我快速看了遍 xmake 文档,似乎还没有特性支持这类需求,也没类似example参考。
我试了下类似下面这样的语句无法直接在 xmake.lua 运行(错误好像是找不到
io
)。请问是否有简单的方案或例子,能在 xmake.lua 已有的配置功能上完成这个目标?
谢谢!
Beta Was this translation helpful? Give feedback.
All reactions