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

  • androidandme

    androidandme

    10 Mart 2009
  • knopik96

    knopik96

    7 Mayıs 2011
  • ThisWeekYT

    ThisWeekYT

    14 Mart 2013