私は自分のプロジェクトをビルドするメイクファイルを持っています。リリースビルド後にmakefileがデバッグフォルダを作成しないのはなぜですか?
make
で呼び出されたときにそれは罰金のビルドが、私は試してみて、その後make debug
をすれば、それも私のビルドの間でmake clean
を呼び出す場合でも、リンクが失敗したことを意味する、デバッグ出力ディレクトリを作成しようとしません。
ただし、「リリース」フォルダを削除すると、デバッグビルドが機能します。
これはなぜ起こるのですか?
Makefileの
EXEC_DIR = ../../../../Bin/linux/release/
EXECUTABLE = $(EXEC_DIR)/prog
CC = g++
DEBUG = -g -D_DEBUG
...
CFLAGS = -Wall -c $(INCLUDE_DIRS) -std=c++11
LFLAGS = -Wall
...
all : $(EXECUTABLE)
debug : EXEC_DIR = ../../../../Bin/linux/debug/
debug : EXECUTABLE = $(EXEC_DIR)/prog
debug : CFLAGS += $(DEBUG)
debug : LFLAGS += $(DEBUG)
debug : $(EXECUTABLE)
$(EXECUTABLE) : $(OBJS) | $(EXEC_DIR)
$(CC) $(LFLAGS) $(OBJS) -o $(EXECUTABLE)
$(EXEC_DIR) :
mkdir -p $(EXEC_DIR)
...
clean :
-rm *.o *~
'debug:EXEC_DIR = ../../../../ Bin/linux/debug /'という行は、あなたが思うとは思っていません。それは、 'debug'ターゲットのスコープに対してのみ' EXEC_DIR'をセットしているのです(makefileに対してはグローバルではありません)。 – John
それが期待どおりに動作したとしても、ソースファイルのどれも変更されていないので、実行可能ファイル以外のものは再構築しません。 –
しかし、もっと重要な点として、 'debug'ターゲットに対して設定された' EXEC_DIR'の値は、 'debug:EXECUTABLE ='代入行中には有効ではありません。それが問題です。 'make -p'の出力を見て' debug'ターゲットを見てください。 –