2011-10-21 15 views
0

同じメイクファイルを持つ2つの実行可能ファイルに組み込まれた2つの "メイン"ファイルに1つの "ヘルパー"ファイルが含まれています。私は、ヘルパーファイルにデバッグprintステートメントを持っています。 print文を実際には1つの実行可能ファイルに出力したいが、もう一方は出力できないようにする。それを行う方法はありますか?今、私は以下のことを持っていますが、DEBUG_PRINTを実行可能ファイルとして定義してコンパイルすることを望んでいましたが、他の実行可能ファイルは定義されていませんでした。異なるオプションの異なるターゲット用に同じファイルを構築する

main1.cpp:

 
    #include "helper.h" 
    ... 

main2.cpp:

 
    #include "helper.h" 
    ... 

helper.cpp:

 
    #ifdef DEBUG_PRINT 
    cout << "here is a debug message" << endl; 
    #endif 

のMakefile:

 
    build: main1 main2 
    main1: main1.o helper.o 
     g++ -g -o main1 main1.o helper.o 
    main2: main2.o helper.o 
     g++ -g -o main2 main2.o helper.o 
    %.o: %.cpp 
     gcc -g -c $< 

答えて

4

次の2つの異なるオブジェクトファイルを(必要があります。 main1-helper.oとmain2-helper.o)とターゲット固有のコンパイラフラグ:

main1: CXXFLAGS=-DDEBUG_PRINT 
%.o: %.cpp 
     gcc $(CXXFLAGS) -g -o [email protected] -c $< 

注:これはhelper.oからMAIN1-helper.oが発生する問題が残ります。これを解決するにはいくつかの方法があります。しかし、独自のソリューションを導入するのではなく、最初からautomakeを使用するほうが快適かもしれません。

+0

+1私は最初にMakefileを誤読しました。 '$(CXXFLAGS)helper.cpp'を' g ++ 'リンクコマンド(一種の汚れているようなもの)に移動させることとは別に、二つの異なるオブジェクトファイルを用意する方法はありません。 – user786653

+0

ありがとう、それは働いた。 –

関連する問題