2012-01-18 14 views
1

Arduinoプロジェクトでは、ブレッドボードにArduino Mega2560とスタンドアロンのATmega 328P DIPチップの2つのデバイス用にコンパイルしてダウンロードするビルド構成があります。両方の設定は、少なくともHelloプログラムのようなデバイスに依存しないコードの場合、それぞれのデバイスでコンパイル、ダウンロード、実行されます。しかし、ほとんどのプログラムは、いくつかの条件付きのデバイス依存コードを必要とします。コンパイルのコマンドラインに追加される(プロジェクトのプロパティ> C/C++ビルド> AVRコンパイラ(とAVR C++コンパイラ)>シンボル)のシンボルをいくつか作成して定義することができました。Eclipse:コンパイル時にbuild-config変数を利用するには?

しかし、IDEのどこかで、私が各構成に対して選択した部品やその他の選択肢は、(Project Properties> C/C++ Build> Environment)で環境変数に割り当てられており、コンパイラコマンド-lineオプションではなく-Dオプションとして指定します。私はこれらの既存のものを使うのが好きです。なぜなら、1)自動的に作成されるからです。 2)私はコンパイラの1つのためにそれらの1つを異なる方法で入力しません。 3)他の作家が同じコンベンションに従うことができます。私は、他のプロジェクトではよりポータブルなコードを作ることができます。

#definesとしてコンパイラに渡す方法はありますか?

(Eclipseのインディゴ、CrossPack-AVR-20100115、&のMac OS 10.6.8)


編集:

回避策、私が作成し、プリビルドスクリプトを書いたとして、ビルド時の環境変数を#defineしするヘッダファイル:

printenv | awk 'BEGIN{print "/*** AUTO-GENERATED FILE -- DO NOT EDIT. ***/\n";} {sub(/^/, "#define "); sub(/=/, " "); print; }' >${CWD}/../src/buildtime-environment.h 



Screenshot of Build Steps dialog

それは2つの注意点を十分に動作します。それは壊れやすいです

  1. - それは私のプロジェクトのディレクトリ構造の「特別な知識」を持っています。
  2. マクロエディタのマクロ展開ツールチップにマクロの古い値が表示され、これを忘れた場合にゴーストを追跡する可能性があり、先端。

(解決を見つけることを断念しない限り、/までコメントを残します)。

答えて

0

私はこれを他のやり方にすることについて言及していません。だから私はそれが存在する場合、それをソースディレクトリにあるスクリプトを探し、実行するために、私の前のビルドステップを一般化しました:ほとんど何でも行うことができ、簡単にプロジェクトごとにカスタマイズされて

if [ -e ../src/avr-prebuild ]; then ../src/avr-prebuild;fi 

。私のコメントに書かれている警告のいずれにも対処していません。それは私のディレクトリ構造がひどいものではないことを知っているので、一貫性を保つことができます。 Eclipse内のツールチップが最新の状態に保たれていないという事実はもう少し深刻ですが、私はそれを使って暮らすことができます。私が数回もばかげた後、私はおそらく覚えています!

+0

これは私がこれまでに作ってみたベストです。私はまだ他の提案にもオープンしています。 – JRobert

0

これはあなたの質問に答えることができません(それは古い質問です)。しかし、実行設定の環境タブを見ましたか?既存の変数に基づいて新しい環境変数を追加できます。たとえば、下の画像では、 "sb"という名前の文字列置換変数があります。この変数については、実行環境の[環境]タブに追加することでコンパイラに知らせることができます。私のコードの中でgetenv( "sb_scope")を使ってこの変数の値に到達することができました。また、sb_scopeをコンパイラ構築プロセスで使用できるようにします。一般に、この領域の目的は、ホスト環境の環境でEclipseが認識している変数を作成することです。

[恥知らずのプラグイン]私のPluralsightコースEclipse Guided Tour Part 2のModule 3 "Eclipse Variables"の "Demo:String Substitution Variables"クリップの完全なデモです。 [/恥知らずプラグイン]

screen shot of adding new environment variable

関連する問題