0

我正在尝试从我的 .proto 生成 C 文件。
我能够做到,但它们是在同一个文件夹中生成的。在此之后,我需要将 .h 文件移动到我的包含目录中。
目前我正在使用 ProtoC Builder,但没有选项可以将 .h 传送到不同的文件夹中。因此,我尝试在以下操作后执行命令移动:

proto_files = localenv.Protoc(
    [],
    protoList,
    PROTOCPROTOPATH=[builddir],
    PROTOCPYTHONOUTDIR=None, # set to None to not generate python
    PROTOCOUTDIR = builddir, # defaults to same directory as .proto
    # PROTOCCPPOUTFLAGS = "dllexport_decl=PROTOCONFIG_EXPORT:", too
)
localenv.Command(proto_files[1], proto_files[1],
               [
                Move("$SRC",incFolder+"/$TARGET"),
               ])

但是当我运行 scons 时出现以下错误:

scons: *为同一个目标指定了两个具有不同操作的环境:

任何想法?

4

1 回答 1

1

您不能拥有目标和源相同的命令(或任何生成器)。SCons 如何知道它是否是最新的,即该构建器是否需要运行?

也许尝试:

tgt = localenv.Command(os.path.join(incFolder, proto_files[1]), proto_files[1],
               [
                Move("$SRC","$TARGET"),
               ])

如果这不起作用,请添加完整的错误消息(这次包括目标名称)。

于 2013-10-18T18:37:03.630 回答