Pregunta

Estoy usando un compilador para TI DSP, por lo que el CC por defecto y enlace y AS herramientas ningún sentido. A continuación se muestra un archivo de SConstruct que funciona para mí, me pregunto si alguien tiene sugerencias para mejorarla. Algunos problemas:

  1. Me gustaría decirle de alguna manera que mis archivos .obj deben ir en un directorio diferente al de los archivos .c fuente. (Se necesita saber dónde, con el fin de averiguar las fuentes para el paso de vinculación, y las dependencias de compilación / enlace) Sería bueno para atar esto con los "-FR" y "argumentos" -fs al compilador , pero no me importa hacerlo manualmente.
  2. Hay algunos archivos de C en el SConstruct presentar a continuación, todos comienzan con un prefijo de DSP2804x_. En este momento scons no pueden averiguar las dependencias de éstos, ya que supongo que está esperando los archivos .obj vivir en el mismo directorio, mientras que mi uso de "-fr" y "fs" para el compilador se refiere a aquellos archivos .obj terminar en el mismo directorio que el archivo SConstruct. ¿Hay una mejor manera de hacer esto? Supongo que probablemente debería tener un paso de generación que copia estos archivos de referencia en un directorio local:. Si los cambio, quiero que los cambios se propagan a todos los proyectos que los utilizan

suspiro ....

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'
  ]);
¿Fue útil?

Solución

He resuelto ambos problemas haciendo una jerárquica y el uso de -fr=${TARGET.dir} en mis opciones del compilador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top