tha*_*ren 5 python mingw scons
我正在尝试使用Windows上的SCons和MinGW从gcc和gfortran对象构建共享库,但在最后一个链接中,命令行太长,超过18000个字符.我知道我需要使用临时文件(响应文件?)来传递命令行,但我找不到让SCons直接执行此操作的方法.我在这个库中使用了CMake,它处理了响应文件,没有受到干扰.
SCons似乎使用CommandGeneratorAction生成共享库命令行.有没有办法告诉这个动作使用响应文件机制?还有另一种方法可以处理我忽略的长命令行吗?
相关的SConscript:
sqllib = env.SharedLibrary(target='fvssql', source=sqllib_sources, LIBS=['odbc32',])
ffelib = env.SharedLibrary(target='fvspncffe', source=ffelib_sources, LIBS=[sqllib,], LIBPATH=['.',])
fvsobjs = env.SharedObject(fvslib_sources)
fvsobjs = [obj for obj in fvsobjs if obj.get_suffix()=='.o']
fvslib = env.SharedLibrary(target='fvspnc', source=fvsobjs, LIBS=sqllib+ffelib, LIBPATH=['.',])
Run Code Online (Sandbox Code Playgroud)
env.Dump()的相关输出:
'SHLIBSUFFIX': '.dll',
'SHLINK': '$LINK',
'SHLINKCOM': <SCons.Action.CommandGeneratorAction object at 0x02DDF770>,
'SHLINKFLAGS': ['$LINKFLAGS', '-shared'],
Run Code Online (Sandbox Code Playgroud)
我可以在我的环境中准备命令行模板env['SHLINKCOM']="${TEMPFILE('$SHLINK -o $TARGET ... $SOURCE')}",但这看起来很脆弱,如果可能的话,我更愿意让SCons处理它.
我尝试使用字符串替换env['SHLINKCOM']='${TEMPFILE("%s")}' % (env['SHLINKCOM'],),但结果是一个不完整的命令行,现在无论如何响应文件.
编辑
我见过LongCmdLinesOnWin32解决方法.如果可能的话,我更愿意使用TEMPFILE,TempFileMunge,命令行间接机制.
| 归档时间: |
|
| 查看次数: |
1755 次 |
| 最近记录: |