Makefiles - Derleme .cpp src/ dosyaları ./o'n/, o zaman ikili bağlantı s
Bu yüzden, proje dizini bu gibi görünüyor:
/project
Makefile
main
/src
main.cpp
foo.cpp
foo.h
bar.cpp
bar.h
/obj
main.o
foo.o
bar.o
Ben ne istiyorum benim makefile yapacağını derleyin .cpp
dosyaları /src
klasör .o
dosyaları /obj
klasör, sonra da bağlantı .o
dosyaları /obj
çıkış halinde ikili kök klasör /project
.
Sorun, hiçbir deneyimi yanında Makefiles var, ve gerçekten bunu yapmak için aramak için ne olduğundan emin değilim.
Ayrıca, bu bir "iyi" bir şekilde bunu yapmak için, ya da orada yapmaya çalıştığım şey, daha standart bir yaklaşım mı?
CEVAP
Soru bir parçası Makefile
Bu bir genelleme yapmak gerekmez sürece oldukça kolaydır, aşağıdaki kod, (ama g yakın sekmeleri boşluk girinti değiştir) gibi bir şey deneyin
CPP_FILES := $(wildcard src/*.cpp)
OBJ_FILES := $(addprefix obj/,$(notdir $(CPP_FILES:.cpp=.o)))
LD_FLAGS := ...
CC_FLAGS := ...
main.exe: $(OBJ_FILES)
g $(LD_FLAGS) -o $@ $^
obj/%.o: src/%.cpp
g $(CC_FLAGS) -c -o $@ $<
Grafik nesil otomatik bağımlılık
""Çoğu sistemler olun. bir özelliği olmalı Makefile vücut sonuna GCC ile -MMD
ekleyerek derleme bir yan etkisi olarak tek geçişte yapılabilir CC_FLAGS
-include $(OBJFILES:.o=.d)
bayrak:
CC_FLAGS = -MMD
-include $(OBJFILES:.o=.d)
Ve çocuklar zaten her zaman GNU Make Manual etrafında belirtildiği gibi, son derece yararlı olacaktır.
Nasıl dosyaları zaman uyumsuz olarak y...
Git bir sembolik bağlantı dosyaları iç...
Yönetmek büyük ikili gıt dosyaları...
Nasıl&; derleme quot&; Java sınıf dosy...
Çözme ikili dosyaları ile Git bir çatı...