Невозможно сделать проект, когда файлы находятся в разных папках - PullRequest
1 голос
/ 22 апреля 2011

Я пытаюсь построить проект.Есть два каталога:

A/
   foo.c
   foo.h
B/
   main.c
   Makefile

main.c включает в себя "foo.h".Что я должен написать в Makefile, чтобы построить проект.Я сделал это

INCLUDE_DIR=../A
LIBS=-lm
CC = gcc
CFLAGS = -c -Wall -I$(INCLUDE_DIR)

default:
    @make clean
    @make main
sample: main.o foo.o
    $(CC) $(LIBS) $? -o $@
main.o: main.c
    $(CC) $(CFLAGS) $< -c $%
foo.o: foo.c
    $(CC) $(CFLAGS) $< -c $%

clean: 
    @rm -rf *.o

Не могу найти foo.c

Ответы [ 2 ]

2 голосов
/ 22 апреля 2011
INCLUDE_DIR=../A
LIBS=-lm
CC = gcc
CFLAGS = -c -Wall -I$(INCLUDE_DIR)

default:
    @make clean
    @make main
sample: main.o $(INCLUDE_DIR)/foo.o
    $(CC) $(LIBS) $? -o $@
main.o: main.c
    $(CC) $(CFLAGS) $< -c $%
$(INCLUDE_DIR)/foo.o: $(INCLUDE_DIR)/foo.c
    $(CC) $(CFLAGS) $< -c $%

clean: 
    @rm -rf *.o $(INCLUDE_DIR)/*.o

Вам нужно указать относительный путь к файлам.

1 голос
/ 22 апреля 2011

IIRC вы можете использовать

foo.o: ../A/foo.c
    $(CC) $(CFLAGS) $< -c $%

но я думаю, это не совсем решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...