如何强制SConscript构建器更改目录?

Dam*_*amg 5 delphi scons

目前我正在尝试将一个百万小时的遗留项目从沉闷的.cmd脚本移植到SCons.部分内容是VC++,其他部分是Delphi.为C++片段创建SConscripts是轻而易举的.

为了构建delphi部分,我编写了一个非常简单的构建器,它可以检测它是程序还是库项目.通过SConscript链接后调用构建器使得scons调用dcc32 $ subdir/project.dpr会误导dcc32查找当前目录中的单位而不是$ subdir.

有没有办法告诉scons在执行驻留在sconscript中的命令之前进入$ subdir,还是应该在构建器中修复它?

先感谢您

ric*_*chq 5

SCons在读取时已经更改为子目录SConscripts的目录,因此看起来问题必须在实际构建器中修复.

解析脚本后,SCons正在运行构建命令,它将保留在顶级目录中.然后使用相对于该顶级目录的路径名发出命令.更改此行为的方法是chdir在Builder中使用关键字.

scons手册页中的示例如下:

b = Builder(action='build < ${SOURCE.file} > ${TARGET.file}',
            chdir=1)
env = Environment(BUILDERS = {'MyBuild' : b})
env.MyBuild('sub/dir/foo.out', 'sub/dir/foo.in')
Run Code Online (Sandbox Code Playgroud)

您需要指定.file组件,因为使用chdir不会更改传递给构建器的名称,即它们仍然相对于顶级目录.