开发者

Cannot make the project when files are located in different folders

I'm trying to build project. There are two directories:

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

main.c includes "foo.h". What do i have to write in Makefile to build the project. I did this

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

default:
    @make clean
  开发者_JS百科  @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

It cant find foo.c


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

You need to tell make the relative path to the files.


IIRC you can use

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

but I guess that's not really a solution?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜