ПОС/Лаб 4 2022 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(Četvrti lab ove godine od `<@793489760256917515>` (zapravo od angažovanih na predmetu))
 
м (Ispravka)
 
(Једна међуизмена истог корисника није приказана)
Ред 1: Ред 1:
{{нерешено}}
== Поставка ==
== Поставка ==
Ваш колега из тима и Ви заједно радите на пројекту чију структуру (организација датотека по фасциклама) је поставио ваш вођа тима. Те структуре морате да се држите и не смете да је мењате јер такву структуру имају сви пројекти у фирми. Колега је написао ''makefile'' за превођење пројекта, али је то радио веома брзо и направио је неколико грешака. Шеф је дошао код Вас и затражио да у наредних пола сата исправите ''makefile'' и још једном Вам напоменуо да не смете мењати структуру пројекта. Такође, шеф је затражио да додате правило које ће омогућити да се командом <code>make check</code> покрене извршавање преведеног пројекта. (Датотека <code>test4.zip</code> садржи пројекат који је потребно превести.)
Ваш колега из тима и Ви заједно радите на пројекту чију структуру (организација датотека по фасциклама) је поставио ваш вођа тима. Те структуре морате да се држите и не смете да је мењате јер такву структуру имају сви пројекти у фирми. Колега је написао ''makefile'' за превођење пројекта, али је то радио веома брзо и направио је неколико грешака. Шеф је дошао код Вас и затражио да у наредних пола сата исправите ''makefile'' и још једном Вам напоменуо да не смете мењати структуру пројекта. Такође, шеф је затражио да додате правило које ће омогућити да се командом <code>make check</code> покрене извршавање преведеног пројекта. (Датотека <code>test4.zip</code> садржи пројекат који је потребно превести.)


Прекопирати исправљени ''makefile''.
Прекопирати исправљени ''makefile''.
== Решење ==
<syntaxhighlight lang="makefile">
<syntaxhighlight lang="makefile">
IDIR = ./code/include
IDIR = ./code/include
Ред 24: Ред 24:


$(OBJDIR)/%.o: $(SRCDIR)/%.c
$(OBJDIR)/%.o: $(SRCDIR)/%.c
     $(COMPILER) -o $@ -c $&lt; $(CFLAGS)
     $(COMPILER) -o $@ -c $< $(CFLAGS)


$(DEPDIR)/%.d: $(SRCDIR)/%.c
$(DEPDIR)/%.d: $(SRCDIR)/%.c
     $(COMPILER) -MM -MT $(OBJDIR)/$*.o $&lt; $(CFLAGS) &gt; $@
     $(COMPILER) -MM -MT $(OBJDIR)/$*.o $< $(CFLAGS) > $@


include $(DEP)
include $(DEP)


make check:
make check:
     make -f makefile $(PROGRAM)-3p, treba da ga pokrene
     make -f makefile $(PROGRAM)
    $PROGRAM


clean:
clean:
Ред 43: Ред 44:
     make check
     make check
</syntaxhighlight>
</syntaxhighlight>
== Решење ==


[[Категорија:ПОС]]
[[Категорија:ПОС]]
[[Категорија:Лабораторијске вежбе]]
[[Категорија:Лабораторијске вежбе]]

Тренутна верзија на датум 16. мај 2023. у 22:41

Поставка

Ваш колега из тима и Ви заједно радите на пројекту чију структуру (организација датотека по фасциклама) је поставио ваш вођа тима. Те структуре морате да се држите и не смете да је мењате јер такву структуру имају сви пројекти у фирми. Колега је написао makefile за превођење пројекта, али је то радио веома брзо и направио је неколико грешака. Шеф је дошао код Вас и затражио да у наредних пола сата исправите makefile и још једном Вам напоменуо да не смете мењати структуру пројекта. Такође, шеф је затражио да додате правило које ће омогућити да се командом make check покрене извршавање преведеног пројекта. (Датотека test4.zip садржи пројекат који је потребно превести.)

Прекопирати исправљени makefile.

Решење

IDIR = ./code/include
OBJDIR = ./build/obj
SRCDIR = ./code/source
DEPDIR = ./build/_dFiles
COMPILER = gcc

CFLAGS = -w -I $(IDIR)
PROGRAM = ./distribution/prog

SRC = $(wildcard $(SRCDIR)/*.c)
OBJ = $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(SRC))

DEP = $(patsubst $(SRCDIR)/%.c, $(DEPDIR)/%.d, $(SRC))

$(PROGRAM): $(OBJ)
    $(COMPILER) -o $@ $^

$(OBJDIR)/%.o: $(SRCDIR)/%.c
    $(COMPILER) -o $@ -c $< $(CFLAGS)

$(DEPDIR)/%.d: $(SRCDIR)/%.c
    $(COMPILER) -MM -MT $(OBJDIR)/$*.o $< $(CFLAGS) > $@

include $(DEP)

make check:
    make -f makefile $(PROGRAM)
    $PROGRAM

clean:
    rm -f $(OBJDIR)/*.o
    rm -f $(DEPDIR)/*.d
    rm -f *~
    rm -f $(PROGRAM)

.PHONY: clean
    make check