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