我通过调用python函数创建一个构建器,SConstruct代码:
model
目标文件不存在,但是当我构建它时没有任何效果并忽略打印功能:
def compile_c(dsts, srcs, env):
for (src, dst) in zip(srcs, dsts):
print src, dst
com2 = [
"mkdir -p %s" % os.path.dirname(dst),
"rm -f %s" % dst,
"%s -M %s -Wno-error %s > %s.tmp" % (env['CC'], ' '.join(env['CFLAGS']), src, dst),
"sed 's,\($*\)\.o[ :]*,%s/objects/c/\1.o %s : ,g' < %s.tmp > %s" % (env['RUNRULE_DIR'], dst, dst, dst),
"rm -f %s.tmp" % dst
]
for com in com2:
print com
if os.system(com):
exit(1)
return None
bld = Builder(action = compile_c)
env = Environment(BUILDERS = {'Foo' : bld})
env["C_D"] = ['../RunRules/Simulation/objects/c/ThreeDAverageVariableCpuCode.d']
env["C_SRC"] = ['ThreeDAverageVariableCpuCode.c']
env.Foo(env["C_D"], env["C_SRC"])
目标文件仍然不存在。
答案 0 :(得分:0)
我通过将env ['C_D']修改为绝对路径来解决这个问题。
答案 1 :(得分:0)
您正在尝试构建当前目录之外的目标。在这种情况下,您必须在命令行上指定目标的相对路径,例如:
scons ../RunRules/ThreeDAverageVariableCpuCode.d
或使用绝对路径,如您自己的答案所示。
要阅读此主题,请访问我们的FAQ page,特别是阅读有关我们&#34;最常见问题解答的第2条的评论&#34; (您将在页面顶部找到一个链接)。