我使用一个编译器TI Dsp,因此默认CC和链接,并作为工具使没有任何意义。下面是一个SConstruct文件,该文件对我的作品,我想知道,如果任何人有建议做的更好。一些问题:

  1. 我想以某种方式告诉我的。obj文件应该在一个不同的目录中的比源。c文件。(它需要知道在那里,以便找出来源的链接步骤,并依赖于编译/联)这将是很好的配合,这在与"fr"和"-fs"的论点来编译器,但我不介意这样做。
  2. 有一些股票C在文件SConstruct文件下,所有开始的前缀DSP2804x_.现在scons不能找出依赖这些,因为我猜它的期望。obj的文件,生活在同一个目录,而我使用的"fr"和"-fs"编译器装置的那些。obj文件最终在相同的目录中的SConstruct文件。有没有更好的方式做到这一点?我猜我也许应该有一个建立步骤复制这些参考文件纳入一个地名录:如果我改变它们,我想要变化传播给所有项目,使用它们。

叹息。...

env = Environment(
   CC = 'C:/appl/ti/ccs/3.3/C2000/cgtools/bin/cl2000',
   CCCOM = '$CC $CFLAGS $CCFLAGS $SOURCES',
   CCFLAGS = Split('-g -q -pdr -d"_DEBUG" -d"LARGE_MODEL" -ml -mt -v28'),

   LINKCOM = '$LINK $LINKFLAGS ${SOURCES.file} -o ${TARGET.base}.out',
   LINK = 'C:/appl/ti/ccs/3.3/C2000/cgtools/bin/cl2000',
   LINKFLAGS = Split('-z -q -c -ecode_start -stack0x200 -w -x'),

   ASCOM = '$CC $CFLAGS $CCFLAGS $SOURCES',
#Bizarre but true. assembly is just like compiling C.
   );


includes = {'CCFLAGS' : [
  '-i../common/headers/include',
  '-i../common/include',
  '-fr.',
  '-fs.'
  ]};
env.MergeFlags(includes);

links = {'LINKFLAGS' : [
  '-m./Debug/Example_2804xGpioToggle.map',
  '-i../common/headers/include', 
  '-iC:/appl/ti/ccs/3.3/C2000/xdais/lib',
  '-iC:/appl/ti/ccs/3.3/C2000/cgtools/lib', 
  '-lrts2800_ml.lib',
  '../common/cmd/28044_RAM_lnk.cmd',
  '../common/headers/cmd/DSP2804x_Headers_nonBIOS.cmd'
  ]};
env.MergeFlags(links);

print "CCCOM is:", env['CCCOM'], "\n", env['LINKCOM'], '\n', env['ASCOM'];

env.Program('blink_gpio', [
  'Example_2804xGpioToggle.c',
  '../common/headers/source/DSP2804x_GlobalVariableDefs.c',
  '../common/source/DSP2804x_CodeStartBranch.asm',
  '../common/source/DSP2804x_DefaultIsr.c',
  '../common/source/DSP2804x_PieCtrl.c',
  '../common/source/DSP2804x_PieVect.c',
  '../common/source/DSP2804x_SysCtrl.c'
  ]);
有帮助吗?

解决方案

我解决这两个问题做一个 分层次建立 和使用 -fr=${TARGET.dir} 在我的编译器的标志。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top