Domanda

Io sto usando un compilatore per TI DSP, in modo che il CC di default e Link e AS strumenti alcun senso. Di seguito è riportato un file SConstruct che funziona per me, mi chiedo se qualcuno ha suggerimenti per renderlo migliore. Alcuni problemi:

  1. Mi piacerebbe dire in qualche modo che i miei file obj dovrebbe andare in una directory diversa rispetto ai file sorgente .c. (Ha bisogno di sapere dove, al fine di capire le fonti per la fase di collegamento, e le dipendenze per la compilazione / linking) Sarebbe bello per legare questo con le e argomenti "-fr" "-fs" al compilatore , ma non mi dispiace farlo manualmente.
  2. Ci sono alcuni file magazzino C nel SConstruct file al di sotto, iniziano tutti con un prefisso di DSP2804x_. In questo momento scons non riesco a capire le dipendenze per questi, perché credo che aspetta i file obj a vivere nella stessa directory, mentre il mio uso di "-fr" e "-fs" per il compilatore indica i file obj finire nella stessa directory del file SConstruct. C'è un modo migliore per fare questo? Sto indovinando probabilmente dovrei avere un passaggio di generazione che copia questi file di riferimento in una directory locale:. Se li cambio, voglio propagazione delle modifiche a tutti i progetti che ne fanno uso

sigh ....

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'
  ]);
È stato utile?

Soluzione

ho risolto entrambi i problemi facendo una gerarchico e utilizzando -fr=${TARGET.dir} nei miei flag del compilatore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top