我的构建过程的一部分是创建一个位于src/bundle/bundle
的输入目录的tar文件。在src / bundle / SConscript中:
Import('*')
bundleDir = Dir("bundle")
jsontar = Command("bundle.tar", bundleDir,
"/home/dbender/bin/mkvgconf $SOURCE $TARGET")
在我的SConstruct中:
SConscript(Split('src/bundle/SConscript'),
exports='bin_env lib_env', build_dir='tmp/bundle')
尝试构建时:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
/home/dbender/bin/mkvgconf tmp/bundle/bundle tmp/bundle/bundle.tar
Input directory tmp/bundle/bundle not found!
scons: *** [tmp/bundle/bundle.tar] Error 1
scons: building terminated because of errors.
显然,scons没有将src / bundle / bundle复制到tmp / bundle / bundle,但我很难过。
脚注: 使用mkvgconf的绝对路径名是不好的做法,但只是中间问题才解决。
答案 0 :(得分:1)
SCons对输入src/bundle/bundle
的内容一无所知 - 只有程序mkvgconf
知道它对该目录的作用。
一种解决方案是在SConscript中添加显式依赖项:
import os
Depends('bundle.tar', Glob(str(bundleDir) + os.path.sep + '*'))
这也意味着当您更新bundle目录的内容时,将重新运行mkvgconf脚本。
PS。您可能希望将build_dir
参数名称更改为variant_dir
,因为在最近的SCons版本中前者被弃用而不赞成后者。