如何使用/编译该文件?

时间:2019-08-08 17:25:31

标签: c unix makefile

我得到了名为pMakefile的示例文件,但不确定如何执行。将使用什么命令以及如何使用它?

我尝试使用make进行编译,它似乎与常规makefile不同。我为此使用UNIX环境。

wombat aardvark.o manatee.o penguin.o velociraptor.o wombat.o [gcc -o 
wombat aardvark.o manatee.o penguin.o velociraptor.o wombat.o]
aardvark.o aardvark.h aardvark.c [gcc -c aardvark.c]
aardvark.h aardvark1.txt aardvark2.txt [date | sed 's/\(.*\)/"\1"/g' | 
cat -s aardvark1.txt - aardvark2.txt > aardvark.h]
manatee.o manatee.h manatee.c [gcc -c manatee.c]
penguin.o penguin.h penguin.c [gcc -c penguin.c]
velociraptor.o velociraptor.h velociraptor.c [gcc -c velociraptor.c]
wombat.o aardvark.h manatee.h penguin.h velociraptor.h wombat.h wombat.c 
[gcc -c wombat.c]

只想知道如何使用该文件。使用执行:

make -f pMakefile gives
pMakefile:1: *** Missing separator. Stop 

2 个答案:

答案 0 :(得分:2)

这不是标准的Makefile,但是我想我知道如何将其转换为一个。在每一行中,第一个文件名是目标,后续文件名是依赖项,方括号中的文本是规则。

例如,前两行:

wombat aardvark.o manatee.o penguin.o velociraptor.o wombat.o [gcc -o 
wombat aardvark.o manatee.o penguin.o velociraptor.o wombat.o]

将在Makefile中表示为:

wombat: aardvark.o manatee.o penguin.o velociraptor.o wombat.o
    gcc -o wombat aardvark.o manatee.o penguin.o velociraptor.o wombat.o

尽管修复了这个问题,但这也是一个写得很差的Makefile -它不使用变量或通配符规则等基本功能,因此具有很高的重复性。最好完全重写一下。

答案 1 :(得分:1)

所提供的代码不构成有效的Makefile。我不确定应该使用哪个实用程序,但是它看起来像是这种形式的行:

target prerequisite ... '[' recipe ']'

在这种情况下,相应的标准makefile将是

wombat: aardvark.o manatee.o penguin.o velociraptor.o wombat.o
    gcc -o $@ aardvark.o manatee.o penguin.o velociraptor.o wombat.o

aardvark.o: aardvark.h aardvark.c
    gcc -c -o $@ aardvark.c

aardvark.h: aardvark1.txt aardvark2.txt
    date | sed 's/\(.*\)/"\1"/g' | cat -s aardvark1.txt - aardvark2.txt > $@

manatee.o: manatee.h manatee.c
    gcc -c -o $@ manatee.c

penguin.o: penguin.h penguin.c
    gcc -c -o $@ penguin.c

velociraptor.o: velociraptor.h velociraptor.c
    gcc -c -o $@ velociraptor.c

wombat.o: aardvark.h manatee.h penguin.h velociraptor.h wombat.h wombat.c
    gcc -c -o $@ wombat.c