makefile有2个可执行文件,怎么做?

时间:2018-03-24 00:08:03

标签: makefile dependencies

我的项目组织如下: src / plateau.c plateau.h tuile.c tuile.h main.c 测试/ tests.c OBJ / 箱/

我正在尝试使用2个可执行文件来创建一个makefile。我无法弄清楚为什么它不起作用。 带有一个可执行文件的makefile只能正常工作,它看起来像这样:

CC = gcc -Wall -Wextra -ansi

SRCDIR = src
OBJDIR = obj
BINDIR = bin

DOXYGEN = doxygen

all: honshu

honshu: $(OBJDIR)/main.o $(OBJDIR)/plateau.o $(OBJDIR)/tuile.o            
    $(CC) $(OBJDIR)/main.o $(OBJDIR)/plateau.o $(OBJDIR)/tuile.o -o honshu

$(OBJDIR)/plateau.o: $(SRCDIR)/plateau.c $(SRCDIR)/plateau.h
    $(CC) -c $(SRCDIR)/plateau.c -o $(OBJDIR)/plateau.o

$(OBJDIR)/tuile.o: $(SRCDIR)/tuile.c $(SRCDIR)/tuile.h
    $(CC) -c $(SRCDIR)/tuile.c -o $(OBJDIR)/tuile.o

$(OBJDIR)/main.o: $(SRCDIR)/main.c
    $(CC) -c -I src $(SRCDIR)/main.c $@ -lm

doxygen: 
    $(DOXYGEN) -g
    $(DOXYGEN) Doxyfile

clean:
    rm *.o
    rm honshu

有两个可执行文件,我试过这样:

CC = gcc -Wall -Wextra -ansi

SRCDIR = src
OBJDIR = obj
BINDIR = bin

DOXYGEN = doxygen

all: honshu tests

honshu: $(OBJDIR)/main.o $(OBJDIR)/plateau.o $(OBJDIR)/tuile.o
    $(CC) $(OBJDIR)/main.o $(OBJDIR)/plateau.o $(OBJDIR)/tuile.o -o honshu

tests: $(OBJDIR)/test_honshu.o $(OBJDIR)/plateau.o $(OBJDIR)/tuile.o
    $(CC) $(OBJDIR)/test_honshu.o $(OBJDIR)/plateau.o $(OBJDIR)/tuile.o -o tests

$(OBJDIR)/plateau.o: $(SRCDIR)/plateau.c $(SRCDIR)/plateau.h
    $(CC) -c $(SRCDIR)/plateau.c -o $(OBJDIR)/plateau.o

$(OBJDIR)/tuile.o: $(SRCDIR)/tuile.c $(SRCDIR)/tuile.h
    $(CC) -c $(SRCDIR)/tuile.c -o $(OBJDIR)/tuile.o

$(OBJDIR)/main.o: $(SRCDIR)/main.c
    $(CC) -c -I src $(SRCDIR)/main.c $@ -lm

$(OBJDIR)/test_honshu.o: $(SRCDIR)/test_honshu.c
    $(CC) -c -I src $(SRCDIR)/test_honshu.c $@ -lm

doxygen: 
    $(DOXYGEN) -g
    $(DOXYGEN) Doxyfile

clean:
    rm *.o
    rm honshu

但是我有以下消息“没有规则要制作”src / test_honshu.c“,”obj.test_honshu.o“是必要的,你有什么想法吗?谢谢!

0 个答案:

没有答案