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

  • Distractify

    Distractify

    1 Aralık 2011
  • GoldgenieOfficial

    GoldgenieOff

    23 Temmuz 2009
  • xCraash

    xCraash

    6 Temmuz 2012