AutoTools 常用的 config.h.in 若要轉成給 CMake 用的, 其實可以先用 script 粗略轉過. 例如下面的 ACConfig2CMakeConfig:
import sys import getopt def ACConfig2CMakeConfig(fNameIn = './config.h.in', fNameOut = './config.h_cmake.in'): f_ac = open(fNameIn, 'r') f_cmake = open(fNameOut, 'w') for line in f_ac: #print line, item = line.split() if (len(item) > 1): if (item[0] == '#undef'): f_cmake.write("#cmakedefine ") f_cmake.write(item[1]) f_cmake.write(" @") f_cmake.write(item[1]) f_cmake.write("@\n") else: f_cmake.write(line) else: f_cmake.write(line) f_ac.close() f_cmake.close() class Usage(Exception): def __init__(self, msg): self.msg = msg def main(argv=None): if argv is None: argv = sys.argv try: try: opts, args = getopt.getopt(argv[1:], "h", ["help"]) except getopt.error, msg: raise Usage(msg) if len(args) == 2: ACConfig2CMakeConfig(args[0], args[1]) elif len(args) == 1: #raise Usage(argv[0] + " fileName_in fileName_out") print >>sys.stderr, "Usage: " + argv[0] + " fileName_in fileName_out" print >>sys.stderr, "Default: " + args[0] + " -> ./config.h_cmake.in" ACConfig2CMakeConfig(args[0]) else: #raise Usage(argv[0] + " fileName_in fileName_out") print >>sys.stderr, "Usage: " + argv[0] + " fileName_in fileName_out" print >>sys.stderr, "Default: ./config.h.in -> ./config.h_cmake.in" ACConfig2CMakeConfig() except Usage, err: print >>sys.stderr, err.msg print >>sys.stderr, "for help use --help" return 2 if __name__ == "__main__": sys.exit(main())
沒有留言:
張貼留言