2.2.4. 从文件读取命令行选项
如果操作系统限制命令行的长度,则可以使用以下编译器选项在文件中提供附加的命令行选项:
--viafilename编译器将打开指定文件,并从中读取附加命令行选项。
scons这个补丁应该可以动态打吧
试着修改下env[' TEMPFILEPREFIX']
或者我们不加scons的补丁,直接自行生成一个objects 列表文件(而不是临时文件),让armlink去-via这个文件。
或者我们不加scons的补丁,直接自行生成一个objects 列表文件(而不是临时文件),让armlink去-via这个文件。
在 2012年11月19日上午8:16,bernard <bernar...@gmail.com>写道:
或者我们不加scons的补丁,直接自行生成一个objects 列表文件(而不是临时文件),让armlink去-via这个文件。
bernard的设想成为现实了。不再需要对scons打补丁了,只需要打如下补丁就可以完美解决armcc编译时,命令行过长的问题。
diff --git a/bsp/stm32f10x/SConstruct b/bsp/stm32f10x/SConstructindex 920b24d..c81815b 100644--- a/bsp/stm32f10x/SConstruct+++ b/bsp/stm32f10x/SConstruct
Export('RTT_ROOT')Export('rtconfig')@@ -36,6 +36,23 @@ objs = objs + SConscript( GetCurrentDir() + '/Libraries/SConscript', variant_dirif GetDepend('RT_USING_RTGUI'):objs = objs + SConscript(RTT_ROOT + '/examples/gui/SConscript', variant_dir='build/examples/gui', duplicate=0)+def mdk_create_tmpfile(tmpfile, objs):+ # cmdline ='--via '+ cmdline =''+ tmpfile = file(tmpfile, 'w')+ for item in objs:+ # print type(item), os.path.basename(str(item))+ cmdline += os.path.normpath(str(item))+ cmdline += ' '++ tmpfile.write(cmdline)+ tmpfile.close();+ return++if rtconfig.PLATFORM == 'armcc':+ mdk_create_tmpfile('tmpcmd.txt', objs)+ env["LINKCOM"] = "$LINK -o $TARGET $LINKFLAGS --via tmpcmd.txt"+# build programenv.Program(TARGET, objs)
这个代码可以和Grissiom 的新的scons tools集成起来,统一放在tools/目录下。并且可以专门为mdk增加一个选项,比如scons --long之类解决命令行编译的问题。