質問

TI DSP 用のコンパイラを使用しているため、デフォルトの CC、LINK、AS ツールは意味がありません。以下は私にとって機能する SConstruct ファイルです。誰かがそれを改善するための提案を持っているかどうか疑問に思っています。いくつかの問題:

  1. 何らかの方法で、.obj ファイルをソースの .c ファイルとは別のディレクトリに配置するように指示したいと考えています。(リンクステップのソースとコンパイル/リンクの依存関係を把握するには、場所を知る必要があります)これをコンパイラの「-fr」および「-fs」引数と結び付けると良いでしょう、しかし、それを手動で行うことは気にしません。
  2. 以下の SConstruct ファイルにはいくつかのストック C ファイルがあり、すべて 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'
  ]);
役に立ちましたか?

解決

私はhref="http://www.scons.org/doc/latest/HTML/scons-user/c3113.html" rel="nofollow noreferrer">階層のビルドと私のコンパイラフラグで-fr=${TARGET.dir}を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top