2016-06-16 6 views
1

ソースファイル "a.c"があるとします。Automakeファイルの1つのプログラムのPreproccessorディレクティブを設定する

"交流" のソースファイルは、建物のプログラムで "PROG1"、 "PROG2"、および「PROG3" を使用している。

"Prog1" also uses source file "x.c" 
"Prog2" uses source file "y.c" 
"Prog3" uses source file "z.c" 

がいると "交流がfoo() "" と呼ばれる機能を使用しています" という"Prog1"はビルドされますが、 "Prog2"と "Prog3"はコンパイルされません。

プログラムProg1をビルドするときに "ac"プログラムProg2をビルドするときはbar2()、プログラムProg3をビルドするときはbar3()を使用します。

automこれをサポートするMakefile.am?

automakeファイル "Makefile.am"で各プログラムをビルドするときに別々のプリプロセッサディレクティブを指定しようとしていましたが、これまでのところどのように処理されているのか分かりませんでした。

ご協力いただければ幸いです。ありがとう。

+1

お試しください。 –

答えて

1

最も簡単なソリューションですか? a.cソースファイルから構築された3つの異なるオブジェクトファイルに対して3つの異なるルールを作成します。

各ルールは、特定のビルドに必要な余分なフラグを簡単に追加できます。

0
bin_PROGRAMS = prog1 prog2 prog3 

prog1_SOURCES = a.c x.c 
prog1_CPPFLAGS = -DPROG1 

prog2_SOURCES = a.c y.c 
prog2_CPPFLAGS = -DPROG2 

prog3_SOURCES = a.c z.c 
prog3_CPPFLAGS = -DPROG3 

しかし、あなたはa.cは、その後、別のオプションで三回コンパイルされているので、あなたが、あなたのconfigure.acAM_PROG_CC_C_Oを呼び出すことを確認する必要があり、これを使用します。

関連する問題