【问题标题】:How to set scons to output full expanded command line?如何设置 scons 以输出完整的扩展命令行?
【发布时间】:2015-09-26 17:23:20
【问题描述】:

我遇到了一个使用 scons 的构建系统。完全不熟悉 scons 本身是一个相当复杂的框架,我对无法调试构建问题感到非常沮丧。

我希望 scons 打印出正在调用的完全扩展的命令行(正如您在大多数构建系统中看到的那样)我发现您可以使用 --debug=presub选项,但(至少在 OSX 上)它是无用的,因为它会打印未扩展变量的值

例如:

Building build/obj/ios-uni-rel-sta-clang/common/libs/boost/libs/date_time/src/gregorian/date_generators.i386.o with action:
  $SHCXX -o $TARGET -c $SHCXXFLAGS $SHCCFLAGS $_CCCOMCOM $SOURCES

您还可以在 scons 命令行上提供一个 VERBOSE=1 参数,但是(至少在 2.3.4 版本)我得到的版本,它似乎并不冗长.

我并不是说 Scons 不好,但维护起来有点费力和昂贵:(

有人熟悉 Scons 吗?什么模块,实际命令在哪里被调用?我只是想添加一些打印...

或者,您如何设置 PyDev 或 PyCharm 以使用 scons --debug=pdb 进行连接?有人这样做吗?

【问题讨论】:

  • 你能展示一下现在的实际输出吗?另外,您要构建什么软件包? SCons 允许构建系统开发人员隐藏完整的输出。
  • 它是否使用了修补过的 scons?我在 Windows 上有 2.3.4,它以所有肮脏的细节打印出完整的命令行
  • 我使用的是 2.4.0,我最终使用了命令行 python 调试 Scons 并在第 827 行和828 的 Action.py 模块打印出扩展的命令行。

标签: c++ macos scons


【解决方案1】:

在 SConstruct、SConscript 或由其中任何一个加载的某个 python 模块中的某个地方(可能在顶级目录下的 site_scons 中)有人正在更改 *COMSTR 环境变量。

它看起来像:

env['SHCXXCOMSTR'] = "Building $TARGET"

或:

for k in env.keys():
    if k.endswith('COMSTR'):
        env[k] = "Building $TARGET"

您需要注释掉这些行。

默认的 SCons 行为是显示命令行。

http://scons.org/doc/production/HTML/scons-man.html#cv-SHCXXCOMSTR

【讨论】:

    【解决方案2】:

    SHOWBUILD=1

    例如: $>scons SHOWBUILD=1

    这对我有用

    【讨论】:

    • SHOWBUILD 不是 scons 默认的,但必须在一些 sconstruct/sconscripts 中实现。
    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 2010-10-14
    • 2011-01-10
    • 1970-01-01
    • 2018-10-01
    • 2010-10-20
    • 2018-04-30
    • 2019-07-19
    相关资源
    最近更新 更多