Cygwin и makefiles - PullRequest
       13

Cygwin и makefiles

2 голосов
/ 15 июня 2011

Я новичок в make-файлах и использую Cygwin для создания своих файлов. У меня есть исходные файлы в трех разных каталогах, и я скомпилировал их, используя метод VPATH , но объектные файлы создаются в текущем каталоге.

Я хочу, чтобы все объектные файлы создавались в одном каталоге и целевой файл в другом каталоге. [То есть файл .mk в другом каталоге] Как я могу это сделать? Как я могу сказать компилятору генерировать их в указанном каталоге?

Вот моя программа:

vpath %.c bad good ugly
    gcc $(CFLAGS)   -c  $<  -o  $@
gola:goka.o foka.o hoka.o
    gcc $^  -o  $@
goka.o:goka.c
    gcc -c  $<
foka.o:foka.c
    gcc -c  $<
hoka.o:hoka.c
    gcc -c  $<

Как поместить все объектные файлы в один каталог, а файл gola [mk] - в указанный каталог?

1 Ответ

1 голос
/ 15 июня 2011

Вы не сказали, где вы хотите эти файлы (и я не могу понять, что вы сказали о «mk file»), но это поместит объектные файлы в obj/ и создаст gola в bin/.

vpath %.c bad good ugly
#    gcc $(CFLAGS)   -c  $<  -o  $@ this line makes no sense                    

OBJECTS = obj/goka.o obj/foka.o obj/hoka.o

bin/gola: $(OBJECTS)
    gcc $^  -o  $@

$(OBJECTS): obj/%.o : %.c
    gcc -c  $< -o $@

Есть способы сделать make-файл чище, короче, более гибким, но это передовые методы.

...