Makefile bénázás

Fórumok

Bevallom, eléggé ugatom ezt a témát és nem találom, milyen triviális hibát követek el, de guglizással semmire sem mentem. Atmel AVR környezetben használnám a ddd-t, az ide vágó Makefile rész így néz ki: (Bocs, nem tudom, hogyan kell a tab-okat jelölni, ________ van helyette)


ddd: gdbinit
________ddd --debugger "avr-gdb -x $(GDBINITFILE)"

gdbserver: gdbinit
________simulavr --device $(MCU) --gdbserver

gdbinit: $(GDBINITFILE)

$(GDBINITFILE): $(TRG)
________@echo "file $(TRG)" > $(GDBINITFILE)

________@echo "target remote localhost:1212" \
>> $(GDBINITFILE)

________@echo "load" >> $(GDBINITFILE)
________@echo "break main" >> $(GDBINITFILE)
________@echo "continue" >> $(GDBINITFILE)
________@echo
________@echo "Use 'avr-gdb -x $(GDBINITFILE)'"

A make ddd ezzel jön vissza:
localhost:1212: Kapcsolat elutasítva

Ha úgy indítom, hogy make gdbserver, akkor természetesen
Waiting on port 1212 for gdb client to connect...

a válasz és ha másik terminálablakban ráindítom a make ddd-t, akkor működik.
A fenti részletet a netről másoltam szolgai módon, copy/paste, de hiába böngészek mindenféle Makefile leírásokat, nem értem, nálam miért nem működik. Segícccccség :(((

Hozzászólások

Nem tudom, pontosan mik a parancsok, amiket ki akarsz adni.

make -n

végrehajtás helyett kiírja, hogy milyen parancsokat futtatna le; ez segíthet.

Megnézném, hogy a változók rendben vannak-e. Plusz a parancsban lehet hivatkozni a függőségre, ha kell (a kettőspont utáni dolgokra):
az első: $<
az összes: $+
Célra (a kettőspont előttire): $@

A függőséget csak úgy, hogy

ezt_kell_csinalni:  ebbol
________parancs

azaz

cél: függőség
________hogyan

Ekkor ha a ,,make ezt_kell_csinalni'' parancsot meghívod, megnézi, hogy van-e ,,ebbol'' nevű fájl (ez maga a függőség). Ha van, lefuttatja a parancsot. Ha nincs, előtte keres egy ,,ebbol:'' célt, és azt is megpróbálja megcsinálni hasonló módon - azaz rekurzív.

A fenti makrókat csak azért mondtam, hátha jól jönnek. A parancsba írhatod bele, ha kell. Helyettesítik a cél vagy a függőség nevét. A parancsba nem kerül bele automatikusan egyik sem.

Ha az a gond, hogy nem tudsz két célt indítani egy make-paranccsal, akkor ezt a formát javaslom:


.PHONY: a b
indul: a b

a: [valami]
________parancs

b: [valami]
________parancs

a ,,make indul'' parancs meg fogja hívni a-t is és b-t is. A .PHONY azt mondja, hogy az a és b célok nem kell hogy megjelenjenek fájlként; csak tisztán a make vezérlésére valók (ilyen szokott lenni az all, clean, stb).

Jobban nem tudok segíteni, amíg nem látom konkrétan, milyen parancsokat szeretnél kiadni (mert én meg AVR-t nem debugoltam még, bár néha szeretnék. :) ).

Köszönöm az útmutatást. Ha szeretnél avr-rel foglalkozni és igényeled, elküldöm magánban a Makefile-t, nagyon komplexre sikerült összehozni, futás közben scriptezve magából a proci forrásokból szed össze minden szükséges információt. Csak ez a ddd dolgot nem tudtam összehozni...