Makefile缺少分隔符但有硬标签

时间:2014-11-26 01:50:10

标签: c makefile

我有3个文件,我想为它们制作一个makefile。

文件是

  • polyHeader.c(这是包含所有函数定义的文件)

  • polyHeader.h(这是包含所有函数声明/原型的头文件)

  • polyTest.c(这是包含主要功能的文件)

我创建了以下makefile

polyTest: polyTest.c polyHeader.o
    gcc -Wall -o polyTest polyTest.c

polyHeader.o: polyHeader.c
    gcc -Wall -o polyHeader polyHeader.c

注意:我不确定我是否也应该处理makefile中的头文件(polyHeader.h),或者甚至需要编译它(即链接器是否只能找到它并链接无论如何 - 我已经使用#include "polyHeader.h"

将其包含在其他文件中

无论如何,当我为上面显示的makefile运行make命令时,我收到以下错误:

Makefile:2: *** missing seperator. Stop.

有人可以告诉我如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

polyTest: polyTest.c polyHeader.o

此行表示polyTest取决于polyTest.c和polyHearder.o。 但是在这个gcc系列中,我没有看到依赖。

gcc -Wall -o polyTest polyTest.c

这个gcc行应该以Tab而不是空格开头。

答案 1 :(得分:0)

这个makefile似乎缺少某些元素,我 建议阅读http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/ 有关简单makefile内容的详细信息

我建议写得更像这样:

// indicate certain targets will never be created
.PHONY: all clean

// get list of source files (wildcard would be an even better method)
SRCS = polyHeader.c polyTest.c

// convert list of source files to list of obj files
OBJS = $(SRCS:.c=.o)

CC=gcc
CFLAGS= -Wall -c -I.
DEPS = polyHeader.h

// first/default target when not listed on command
all: poly ${OBJS}

// link objects to make 'poly' executable
poly: ${OBJS}
    $(CC) $(LFLAGS) -o poly $(OBJS)  

// compile each source file into a object file
%.o: %.c $(DEPS)
    $(CC) $(CFLAGS) -o $@ $< 

// target for removing debris from current directory
clean: 
    rm -f *.o
    rm -f poly