Flatbuffers的编译器有个-c参数选项,这个选项需要一个个传入.fbs文件的路径,给维护带来很大的不便。昨晚改了下flatbuffers的编译器代码,把cpp代码生成器生成的部分变量名以及生成的cxx文件后缀改掉了,这样看起来违和感没那么强,符合Coeus的代码风格。本来也想把-c选项改成支持’‘通配符的,这样便可以肆无忌惮地给出一个目录让编译器自己去遍历.fbs文件。但回头一想这似乎不应该是编译器做的事情,所以就把这个想法搁掉了。于是写了个简单的python脚本(2.7.x),用来维护fbs文件并且把生成的cxx文件输出到指定目录。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #Author By AngryPowman #Copyright 2014 Coeus
import os import glob
FBS_COMPILER = os.path.abspath("./tools/flatc.exe") FBS_PATH = "./fbs/*.fbs" FBS_CXX_OUTPUT = "./protocol/" FBS_FILES = ''
def search(path) : global FBS_FILES for filename in glob.glob(path): if os.path.isdir(filename): search(filename) else: base_file_name = os.path.basename(filename) FBS_FILES += filename + ' ' print filename
if __name__ == '__main__': #search files search(FBS_PATH) #compile print "FBS Environment :" print " >> FBS_COMPILER : " + FBS_COMPILER print " >> FBS_PATH : " + FBS_PATH print " >> FBS_CXX_OUTPUT : " + FBS_CXX_OUTPUT print " >> FBS_FILES : " + FBS_FILES
#create output directory if not exists if not os.path.exists(FBS_CXX_OUTPUT): os.makedirs(FBS_CXX_OUTPUT)
result = os.system(FBS_COMPILER + " -o " +FBS_CXX_OUTPUT + " -c " + FBS_FILES) if result == 0: print "Compiled Okay!" else: print "Failed to compile, errorcode = " + str(result)
|
相关的环境变量都在最顶部定义,没啥版权,可以按需修改:)