lapack def文件的建立
上次使用了遍历lapack目录的方法,建立的def文件,有些函数就没有加进来,因为有些.f文件在其他目录中,不在SRC目录里。
因此需要想一个一劳永逸的方法。
目前想到的是从proj文件获得文件名称的办法。
都在下面的代码中了
import re
projs=('C:\\lapack-3.8.0\\vc2015_build\\SRC\\lapack.vfproj',
'C:\\lapack-3.8.0\\vc2015_build\\BLAS\\SRC\\blas.vfproj')
exclude='DSECND_EXT_ETIME SECOND_EXT_ETIME DSECND_EXT_ETIME SECOND_EXT_ETIME'
for proj in projs:
path=proj[:proj.rfind('\\')]
libname=proj[proj.rfind('\\')+1:proj.rfind('.')]
deffile=open(path+"\\"+libname+".def",'wt')
deffile.write("LIBRARY "+libname+"\nEXPORTS\n")
ddeffile=open(path+"\\"+libname+"d.def",'wt')
ddeffile.write("LIBRARY "+libname+"d\nEXPORTS\n")
f=open(proj)
for line in f.readlines():
l=line.strip();
m=re.match(r'^<File RelativePath=\"',l)
if(m is not None):
m=re.search(r'\.f\"[/]?>',l) #后面的“.f"\>”或“.f">”
if(m is not None):
path=line[19:line.find(m.group())]
name=path[path.rfind('\\')+1:]
if(exclude.find(name.upper())==-1):
deffile.write("\t"+name.upper()+"\n")
deffile.write("\t"+name+"_="+name.upper()+"\n") #别名
ddeffile.write("\t"+name.upper()+"\n")
ddeffile.write("\t"+name+"_="+name.upper()+"\n") #别名
f.close()
deffile.close()
ddeffile.close()