Makefile脚本无法正常运行
我有这些文件Makefile脚本无法正常运行,makefile,Makefile,我有这些文件main.c,fun.c,和fun.h。我想使用makefile脚本来运行,而不是传统的编译方法。发布以下makefile脚本的人说,该脚本将自动捕获同一目录中的文件名,因此我只需导航到项目目录并写入终端$make。我创建了一个文件makefile,并放入以下脚本: TARGET = prog LIBS = -lm CC = gcc CFLAGS = -g -Wall .PHONY: default all clean default: $(TARGET) all: defaul
main.c
,fun.c
,和fun.h
。我想使用makefile
脚本来运行,而不是传统的编译方法。发布以下makefile脚本的人说,该脚本将自动捕获同一目录中的文件名,因此我只需导航到项目目录并写入终端$make
。我创建了一个文件makefile
,并放入以下脚本:
TARGET = prog
LIBS = -lm
CC = gcc
CFLAGS = -g -Wall
.PHONY: default all clean
default: $(TARGET)
all: default
OBJECTS = $(patsubst %.c, %.o, $(wildcard *.c))
HEADERS = $(wildcard *.h)
%.o: %.c $(HEADERS)
$(CC) $(CFLAGS) -c $< -o $@
.PRECIOUS: $(TARGET) $(OBJECTS)
$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) -Wall $(LIBS) -o $@
clean:
-rm -f *.o
-rm -f $(TARGET)
我想我误解了他!好心的,这里少了什么?谢谢缺少分隔符错误是因为您没有使用“配方”选项卡 例如,您的目标有一个$(OBJECTS)的先决条件,一旦Make知道(或使其)存在,那么它将继续执行配方
$(TARGET): $(PREREQUISITES)
->(TAB) $(RECIPE)
缺少分隔符错误是因为您没有使用“配方”选项卡 例如,您的目标有一个$(OBJECTS)的先决条件,一旦Make知道(或使其)存在,那么它将继续执行配方
$(TARGET): $(PREREQUISITES)
->(TAB) $(RECIPE)
生成文件不是脚本。。。我会考虑使用它们非常传统(但是你的方法只是编译名为<代码> *.c/c>绝对不是很传统的……)你的<代码>默认目标BTW在这个Mag文件中根本没有任何用途。为什么不把
all:$(TARGET)
作为第一条规则来写呢?我觉得这似乎是正确的,请记住,在Makefile中,这些空格(按顺序为4个空格)必须是制表符('\t')。您需要将其重命名为Makefile,或者makefileNope,默认情况下make
只会查找GNUmakefile
,Makefile
,然后按该顺序创建文件。更改它或使用make-f makefile.make
。makefile不是脚本。。。我会考虑使用它们非常传统(但是你的方法只是编译名为<代码> *.c/c>绝对不是很传统的……)你的<代码>默认目标BTW在这个Mag文件中根本没有任何用途。为什么不把all:$(TARGET)
作为第一条规则来写呢?我觉得这似乎是正确的,请记住,在Makefile中,这些空格(按顺序为4个空格)必须是制表符('\t')。您需要将其重命名为Makefile,或者makefileNope,默认情况下make
只会查找GNUmakefile
,Makefile
,然后按该顺序创建文件。更改它或使用make-f makefile.make
。更正。我也发现了。谢谢你没问题,我会只是发表评论,但没有代表!玩得高兴对的我也发现了。谢谢你没问题,我会只是发表评论,但没有代表!玩得高兴