如何查看 SCons 中将构建哪些目标?

GMi*_*ael 3 c++ scons

我有一个相当大的 C++ 项目,由几个共享库和可执行文件组成。该项目由 SCons 构建。我的客户要求任何补丁都必须包含尽可能少的二进制文件。换句话说,我必须在构建之前知道要构建哪些目标。此外,如果 A.cpp 生成 libB.sl 进而影响 libC.sl 和 D.bin,我只需要获取 libB.sl 作为输出。我找不到简单的方法来做到这一点。有什么建议吗?

Ken*_*ock 5

您可以在构建之前通过解析以下命令的输出来获取您在问题中请求的所有信息。

>> scons --dry-run --tree=all --debug=explain
Run Code Online (Sandbox Code Playgroud)

这不会构建任何东西 ( --dry-run),将列出所有需要重建的文件以及原因 ( --debug=explain),然后是依赖关系树 ( --tree=all)。

因此,您应该能够从该命令的输出中抓取由于 .cpp 文件代码更改而需要重新构建的目标文件列表,然后解析依赖关系树以解析您必须包含哪些二进制文件您的补丁基于您想要解析依赖树的任何规则。