我正在尝试为名为 lil-gp 的遗传编程编译一个 C 库.
我不知道这类问题在这里问是否合适,但我正在就此寻求认真的帮助。
makefile 位于目录lilgp1.1/1.1/kernel
下,命名为GNUmakefile.kernel
。它看起来像这样:
kobjects = main.o gp.o eval.o tree.o change.o crossovr.o reproduc.o \
mutate.o select.o tournmnt.o bstworst.o fitness.o genspace.o \
exch.o populate.o ephem.o ckpoint.o event.o pretty.o individ.o \
params.o random.o memory.o output.o
kheaders = event.h defines.h types.h protos.h protoapp.h
.PHONY : all clean
LIBS += -lm
CFLAGS += -I. -I$(KERNELDIR)
all : $(TARGET)
lilgp.h = $(addprefix $(KERNELDIR)/,$(kheaders)) $(uheaders)
$(kobjects) : %.o : $(KERNELDIR)/%.c
$(CC) -c $(CFLAGS) $< -o $@
$(uobjects) : %.o : %.c
$(CC) -c $(CFLAGS) $< -o $@
$(kobjects) $(uobjects) : $(lilgp.h)
$(TARGET) : $(kobjects) $(uobjects)
$(CC) $(LFLAGS) -o $@ $^ $(LIBS)
clean :
\rm -f $(kobjects) $(uobjects) core
作为第一步,我遵循了这些步骤:
- 我将其重命名为
Makefile
- 其次,我将
all : $(TARGET)
移动到clean: ...
但是 GNU make 向我提示:
make: *** No rule to make target `/main.c', needed by `main.o'. Stop.
最佳答案
从错误消息中可以清楚地看出 $(KERNELDIR)
是空白的。我会在整个项目树中搜索 KERNELDIR
并从那里获取它...
关于c - 我不知道这个 makefile 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8604524/