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

How to see what targets will be built in SCons?

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

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

>> scons --dry-run --tree=all --debug=explain

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

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