当文件位于不同的文件夹中时,无法生成项目

时间:2011-04-22 00:16:52

标签: c build makefile

我正在尝试建立项目。有两个目录:

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 个答案:

答案 0 :(得分:2)

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

你需要告诉make文件的相对路径。

答案 1 :(得分:1)

IIRC你可以使用

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

但我猜这不是一个真正的解决方案吗?