我有一个朋友,其中包括有冲突的情况下共享的头一个项目(如:#包括"xyz.h"
,但实际的文件是Xyx.h
)。
我应该如何解决这个问题?
我决定写一个Python或bash脚本来分析所有#include
的,然后搜索,如果他们实际上是在目录中。 这是一个好的方法吗?
哪一个我应该使用,蟒蛇或bash。 我想,庆典会更容易些,因为它可以处理文件,并替换名称更容易。 但我必须写在我的bash脚本的正则表达式?
我有一个朋友,其中包括有冲突的情况下共享的头一个项目(如:#包括"xyz.h"
,但实际的文件是Xyx.h
)。
我应该如何解决这个问题?
我决定写一个Python或bash脚本来分析所有#include
的,然后搜索,如果他们实际上是在目录中。 这是一个好的方法吗?
哪一个我应该使用,蟒蛇或bash。 我想,庆典会更容易些,因为它可以处理文件,并替换名称更容易。 但我必须写在我的bash脚本的正则表达式?
一个单一的防弹解决方案:
#include
话虽这么说,如果文件的数量小,如果文件不是太复杂,这都不可能实现自动化。 但我的观点是,时间的增益是不值得的工具的开发和错误的在它的风险。
这可能不太具有挑战性,我最初以为。
from glob import glob as gg
# read in list of .h files and build dictionary
hfiles = dict([(r, r.lower) for r in gg('srcDir/*.h')])
# read in c file
with open('srcDir/cfile.c', 'r') as tmp:
cfile = tmp.read().split('\n')
# make include replacements (assuming NO text in file prior to include statments...adjust as needed)
for r in arange(len(cfile):
if ('# include' in cfile[r]) and (cfile[r].split()[-1] in hfiles):
key = cfile[r].split()[-1].lower()
cfile[r] = '# include ' + hfiles[key]
# now right out corrected c file
with open('dst/new_c_file.c', 'w') as fid:
fid.write('\n'.join(cfile))
这不是最漂亮的代码,我没有测试它(最好不要覆盖你的文件,直到您已经测试了这一点),但一般的方法应该工作,相当灵活。