0

私は makefile を初めて使用します。make デバッグ モードを追加しようとしています。

私は次のものを持っています:

CXXFLAGS=-Wall -c

debug: $(EXECUTABLE)
     CXXFLAGS+=-pg

all:
....

何らかの理由でそれを割り当て、make debug を入れると、それが表示されます

CXXFLAGS+=-pg
/bin/sh: CXXFLAGS+=-pg: not found
make: *** [debug] Error 127

-pg フラグを使用する場合を除いて、すべてのコマンド全体をデバッグで再度書き込むことを回避する方法はありますか?

デバッグを削除しようとしました: ターゲットと CXXFLAGS が -pg フラグで正常に連結されました

4

2 に答える 2

3

gnumake を使用している場合は、以下を追加するだけです。

debug: CXXFLAGS += -pg
debug: $(EXECUTABLE)

allそれがデフォルトになるように最初に定義するのが一般的であることに注意してください。ルールが Makefile のdebug前にある場合は、デフォルトになります (最初の場合)。alldebug

于 2012-11-05T22:06:21.460 に答える
0

ターゲットの下のタブでインデントされたすべての行は、シェルサブプロセスに直接パイプされますが、CXXFLAGS行は有効なシェル構文ではなくMakefile構文を使用しています。

さらに悪いことに、シェル構文を使用した場合でも、変数を設定しても、別のターゲットで実行された行には引き継がれません。それらは、同じターゲットの下のシェルコマンドにのみ影響し、すべての行が\エスケープ文字で結合されている場合にのみ影響します。

Makeは環境変数から値を読み取るため、makeの実行時に環境変数を設定できます(例:(Bourne-family shells))。

myprompt$ CXXFLAGS=" -pg $CXXFLAGS" make
于 2012-11-05T22:10:13.203 に答える