【发布时间】:2014-05-20 13:49:40
【问题描述】:
我正在努力使用最后的逻辑,以使我们的 Ada 构建器与 variantdir 一起按预期工作。问题是由于不灵活的工具gnatbind 和gnatlink 不允许将活页夹文件放在当前目录以外的目录中。这给我留下了两个选择:
- 让 gnatbind 将活页夹文件写入 topdir,然后让 gnatlink 从那里选择它。但是,如果我们希望允许针对我们想要的不同架构和编译器版本进行模拟构建,这可能会导致竞争条件。
-
修改对 gnatbind 和 gnatlink 的调用以暂时进入构建目录,在我们的例子中为
build/$ARCH/src-path。我成功地修复了gnatbind步骤,因为这是使用 Ada 构建器中的env.Execute显式调用的。为了尝试修复链接步骤,我修改了 Program env 使用env["LINKCOM"] = SCons.Action.Action(ada_linkcom)
ada_linkcom 定义为
def ada_linkcom(source, target,env ):
....
return ret
其中ret 是一个字符串,描述了应该在shell 中执行的操作。我需要这是一个函数,它包含一些复杂的逻辑,将路径从相对于顶层转换为只包含它们的基本名称。
但是,这会失败,并在函数 do_execute 的第 347 行的 scons-2.3.1/SCons/Executor.py 中出现错误。 env["LINKCOM"]不可以是ada_linkcom签名的函数吗?
【问题讨论】:
标签: builder ada scons build-system