我试图让SCons
生成多个目标(在SConscript
中直接未知的数量)。在
我有这样的目录:
headers/
Header1.h
Header2.h
Header3.h
Header4.h
meta/
headers_list.txt
现在我想让SConscript读取headers_list.txt
,根据它的内容从headers/
目录中选择文件(即它可能只包含Header1
和{
我一直在尝试使用env.Command
来实现这一点,但问题是它要求调用者指定targets list,这在调用env.Command
时显然是未知的。在
我唯一能想到的就是跑步:
^{pr2}$但这意味着每次调用parse( headers_file )
,我都会运行parse( headers_file )
。
如果解析成本很高,而且文件不经常更改,则可以轻松缓存此步骤。在
我缺少什么SConsc构造/类/技术来实现缓存?在
编辑:
我的问题似乎与Build-time determination of SCons targets相似,但是有没有没有没有人工虚拟文件的技术呢?在
而且,即使使用临时文件,我也不知道如何将生成可变数量目标的target
变量传递给第二个将迭代这些目标的目标。在
编辑2:
This看起来很有前途。在
我发现我能做到这一点的唯一方法是使用
emitter
。 以下示例由3个文件组成:
^{pr2}$SConstruct
src/SConscript
src/source.txt
输出:
还有一件事我不太喜欢,那就是每次执行
scons
时对headers_list.txt
进行解析。我觉得应该有一种方法来解析它,只有当文件改变了。我可以手动缓存,但我仍然希望有一些技巧可以让SCons为我处理缓存。在我找不到一个不复制文件的方法(}是相同的)。
一种方法是在我的操作中生成库而不是源代码(这是我在最终解决方案中使用的方法)。在
a
和{相关问题 更多 >
编程相关推荐