我有以下make文件
all: XmlNode.o y.tab.o y.tab.o lex.yy.o
gcc -g -o prog y.tab.o lex.yy.o XmlAttributeNode.o XmlNode.o -ll -ly -lm
XmlNode.o:
cd XmlNode; make
y.tab.o: y.tab.c
gcc -g -c y.tab.c
lex.yy.o: lex.yy.c
gcc -g -c lex.yy.c
y.tab.c: LexYacc/prog1.y
bison -y -dv LexYacc/prog1.y
lex.yy.c: LexYacc/prog1.l
lex -l LexYacc/prog1.l
clean:
rm -f y.tab.* lex.yy.* *.o prog
XmlAttributeNode.o
和XmlNode.o
在XmlNode
文件夹中生成,因此出现错误
gcc: XmlAttributeNode.o: No such file or directory
gcc: XmlNode.o: No such file or directory
我查看了以下问题1,2和3,但我似乎无法找到如何获取所生成的所有.o文件的列表XmlNode.o所以1)我不必手动输入它们2)包含正确的路径,所以gcc可以找到.o文件。所以像这样:
XmlNode.o:
cd XmlNode; XmlNodeList = .o files from this make; XmlPath = `pwd`;
然后:
all: XmlNode.o y.tab.o y.tab.o lex.yy.o
gcc -g -o prog y.tab.o lex.yy.o XmlPath/XmlNodeList -ll -ly -lm
任何帮助都将不胜感激。
答案 0 :(得分:1)
假设评论中的信息,这至少会起作用。
all: XmlNode.o y.tab.o y.tab.o lex.yy.o
gcc -g -o prog y.tab.o lex.yy.o XmlNode/XmlAttributeNode.o XmlNode/XmlNode.o -ll -ly -lm
XmlNode/XmlAttributeNode.o XmlNode/XmlNode.o:
cd XmlNode; make
y.tab.o: y.tab.c
gcc -g -c y.tab.c
lex.yy.o: lex.yy.c
gcc -g -c lex.yy.c
y.tab.c: LexYacc/prog1.y
bison -y -dv LexYacc/prog1.y
lex.yy.c: LexYacc/prog1.l
lex -l LexYacc/prog1.l
clean:
rm -f y.tab.* lex.yy.* *.o prog; cd XmlNode; make clean