从SConscript中确定构建目录

1 投票
1 回答
758 浏览
提问于 2025-04-15 17:06

我有一个 SConscript 文件,它会被复制到一个构建目录(variant_dir = ...)里进行构建。为了绕过一个问题,具体是关于< a href="https://stackoverflow.com/questions/1916251">无法表达依赖关系,我想把一些额外的文件复制到构建目录中。

我该如何在 SConscript 中确定当前的构建目录呢?

比如,在下面的结构中,内部的 SConscript 文件应该把 my_build_directory 设置为 "build/something"。

project/
    SConstruct      # "SConscript('something/SConscript', variant_dir = 'build/something')
    something/
        SConscript  # "my_build_directory = ..."

1 个回答

2

我的回答看起来太简单了,所以可能我误解了问题,不过……

对我来说,在 subdir/SConscript 里:

my_build_directory = '.'

echo_cmd = Command('always.echo', [],  "echo %s" % (Dir('.').abspath))
Alias('echo', echo_cmd)

会产生:

# => cd test-scons
# => ls 
#    build/  SConstruct  subdir/
# => scons echo 
#    scons: Building targets ...
#    echo HOME/test-scons/build/subdir
#    HOME/test-scons/build/subdir
#    scons: done building targets.

撰写回答