如何延迟SCons源扫描程序的运行?

2024-05-29 00:15:45 发布

您现在位置:Python中文网/ 问答频道 /正文

<>我有一个SCONS构建系统,用来构建一些来自C++的库,以及通过SWIG为它们创建的Python包装器。然后将结果用于数据处理,这也是SCons构建的一部分。数据处理是使用构建的SWIG包装库的Python脚本。在

我已经设置了依赖项,以便在构建所有库和包装器之后开始数据处理,并且效果良好。但有个警告(你猜到了,对吧?:) ). 我想添加一个源代码扫描程序,它还使用一些SWIG库来扩展依赖关系。问题是扫描仪运行太快。事实上,我看到它运行了两次——一次是在构建的早期,另一次是在数据处理开始之前。因此,并行构建中运行的第一个扫描器通常发生在构建所有必需的库之前,因此它会失败。在

如何使扫描仪本身依赖于库目标?在

或者,我可以延迟扫描仪运行-或者取消第一次扫描运行吗?在

还有别的主意吗?在


Tags: 程序脚本警告目标源代码关系系统scons
2条回答

这是另一种可能的解决方案,它是另一种解决方法。如果*.i swig接口文件作为“node”参数传递给它,那么扫描仪是否可以推测将生成的文件列表?这样,扫描器实际上不需要文件来生成依赖项列表。在

一般来说,我想知道这个问题的解决方案是否只是在SWIG库真正生成之前编写逻辑来积极地推测依赖关系。我不认为通过查看“\*.so”文件本身可以获得多少信息。在

我认为的一个解决方法是将scanner转换成一个builder,它运行扫描过程而不是scanner,并生成一个列出所有依赖项的文件。然后,数据处理构建只需要一个扫描程序来解析该文件。我希望SCons不会尽早运行它,因为它会意识到扫描的源文件是某个构建器的目标。在

假设它能工作,它仍然是一个不太理想的解决方案,因为它会使构建设置复杂化,并为一个不太小的文件添加额外的文件I/O(依赖项是数千个文件,路径很长)。在

相关问题 更多 >

    热门问题