2013-10-18 64 views
0

我想從我的.proto生成C文件。
我能夠做到這一點,但它們是在同一個文件夾中生成的。在此之後,我需要將.h文件移動到我的include目錄中。
此時我正在使用ProtoC Builder,但沒有選項可將.h放入不同的文件夾。所以,我想是這樣後做一個命令移動:
Building .proto and move .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: * Two environments with different actions were specified for the same target:

任何想法?

回答

1

你不能有一個命令(或任何生成器)的目標和源是相同的。 SCons如何知道它是否是最新的,即該建築商是否需要運行?

也許嘗試:

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

如果還是不行,請添加完整的錯誤消息(這一次包括目標名稱)。

+0

我對周圍的變量做了一些處理,可以解決這個問題。謝謝 – jpereira