SORU
25 Mayıs 2010, Salı


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
25 Mayıs 2010, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • JorteexHD

    JorteexHD

    20 NİSAN 2012
  • metal571

    metal571

    30 Mayıs 2006
  • RawBrahs

    RawBrahs

    28 Aralık 2010