2009-12-11 14 views
6

SKELETON_JAR変数をC++コードの1つのヘッダに使用しています。しかし、コンパイル時にjarの場所を簡単に定義できるようにしたい。私はそれを行う最も簡単な方法は、これをmakefileに定義することだと思いますか?C++プリプロセッサ変数

#define SKELETON_JAR "./Util.jar" 
+0

あなたのビルド環境は何ですか?あなたのOS? –

答えて

8

#ifndef SKELETON_JAR 
    #define SKELETON_JAR "./Util.jar" // default path 
#endif 

、次にメイクファイルでCPPFLAGS:=-DSKELETON_JAR="./Util.jar"を使用してください。

もちろん、デフォルトの暗黙ルールを使用している場合は、コンパイルルールの一部としてCPPFLAGSがコンパイラに渡されるようにする必要があります。

From GNU Make documentation

コンパイルCプログラム

なしには、フォーム、 `$(CC)-c $(CPPFLAGS)$(CFLAGS)」

のコマンドを使用して、NCから自動的に作られます
+0

条件付きコンパイルの便利なビットですが、私はOPのメークファイルの性質について何らかの仮定をする危険はありませんでした。重要な部分は、-Dコマンドラインスイッチです。あなた'LL #endifのその方法を「SKELETON_JARが定義されていない」SKELETON_JAR #エラー#ifndefの : – Clifford

+0

おかげでみんな、両方の答えはあなたにもこのような何かを行うことができ、デフォルトのパスを定義する代わりに –

+2

素晴らしいですMakefileに定義されていない場合は簡単にキャッチします – Glen

6

コンパイラによっては、これを行う通常の方法は、メイクファイルでコンパイラの-Dフラグを使用することです。たとえば、次のように後に続い

MYFLAGS = -DSKELETON_JAR = "foo" という

を:

gccのあなたのコードで$(MYFLAGS)$(OTHER_STUFF)

+0

downvoterに - この答えのどのビットが間違っていますか? –

+0

同じことに驚いていた –

+0

私はそう思う人もいます。おそらく、-D = GCCオプションについて簡単に説明していますが、OPのメークファイルについての混乱を招くことはありません。 – Clifford

0

Makefileに同じフラグとdefineフラグを使用します。

関連する問題