Projemi oluşturan bir makefile sahibiyim.Makefile, sürüm oluşturma işleminden sonra neden bir hata ayıklama klasörü oluşturmuyor?
make
ile çağrıldığında ince oluşturur, ama denemek ve daha sonra bir make debug
yaparsak, hatta ben oluşturur aradaki make clean
çağrı bile, bağlantı başarısız demektir ayıklama çıkışı dizin oluşturmayı denemez.
Ancak "yayımlama" klasörünü silersem hata ayıklama yapıyorum.
Bunun neden olduğunu bilen var mı?
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 *~
satırı 'hata ayıklama: EXEC_DIR = ../../../../ Bin/linux/debug /' sizin yaptığınızı düşünmez. Ne yapar, EXEC_DIR 'sadece' hata ayıklama 'hedefinin (makefile için küresel değil) kapsamı için ayarlar. – John
Bu beklenmedik işe yaramış olsa bile, kaynak dosyalarının hiçbiri değişmeyeceği için, çalıştırılabilir olandan başka bir şey yeniden inşa edemez. –
Ancak, noktadan daha fazlası için 'debug' hedefine ayarlanan EXEC_DIR değeri 'debug: EXECUTABLE =' atama satırında geçerli değil. Sorun bu. Bunu görmek için 'debug' hedefi için make -p' çıktısına bakın. –