我得到了名为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
答案 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