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

标签 delphi scons

目前,我正在尝试将一个百万 sloc 遗留项目从乏味的 .cmd 脚本移植到 SCons。其中一部分是VC++,其他是Delphi。为 C++ 片段创建 SConscript 是一件轻而易举的事。

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

有没有办法告诉 scons 在执行 sconscript 中的命令之前输入 $subdir 或者我应该在构建器中修复它?

提前谢谢

最佳答案

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

一旦脚本被解析,并且 SCons 正在运行构建命令,它就会保留在顶级目录中。然后使用相对于该顶级目录的路径名发出命令。更改此行为的方法是在构建器中使用 chdir 关键字。

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')

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

关于delphi - 如何强制 SConscript 构建器更改目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2988115/

相关文章:

delphi - 是否可以初始化函数引用的常量数组?

vim - 如何设置 ":make"以使用scons?

java - 如何构建/编译 C++、Java 和 Python 项目?

Scons VariantDir() 编译时重复 CPPPATH 和 LIBPATH?

mongodb - 卡在 Mavericks OSX 10.9 brew install 上安装 MongoDB 在 scons 线上挂起

delphi - 填充监 window 口中的所有字段值

delphi - 记录文件错误

delphi - 如何更改 TEdit 默认错误消息(NumbersOnly 模式)?

java - DataSnap Delphi XE3 和Android 4.0 没有返回选择功能?

python - 使用 SCons 的 VariantDir 和 Repository 来构建使用自定义生成器