Question

J'utilise un compilateur pour DSP TI, de sorte que le CC par défaut et LINK et AS outils aucun sens. Ci-dessous un fichier SConstruct qui fonctionne pour moi, je me demande si quelqu'un a des suggestions pour faire mieux. Quelques problèmes:

  1. Je voudrais dire en quelque sorte ce que mes fichiers .obj devraient aller dans un autre répertoire que les fichiers .c source. (Il a besoin de savoir où, afin de déterminer les sources de l'étape de liaison, et les dépendances pour la compilation / liaison) Ce serait bien de lier ce avec les « arguments » et -FR « -fs » au compilateur , mais je ne me dérange pas le faire manuellement.
  2. Il y a quelques fichiers C stock dans le fichier SConstruct ci-dessous, tous commencent par un préfixe de DSP2804x_. En ce moment scons ne peuvent pas comprendre les dépendances pour ceux-ci, parce que je pense que ça attend les fichiers .obj à vivre dans le même répertoire, alors que mon utilisation de « -FR » et « fs » pour le compilateur désigne les fichiers OBJ finissent dans le même répertoire que le fichier SConstruct. Y a-t-il une meilleure manière de faire cela? Je suppose que je devrais probablement une étape de construction que des copies de ces fichiers de référence dans un répertoire local. Si je change, je veux que les modifications propagées à tous les projets qui les utilisent

soupir ....

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'
  ]);
Était-ce utile?

La solution

Je résolu les deux problèmes en faisant une hiérarchique et en utilisant -fr=${TARGET.dir} dans mes drapeaux du compilateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top