1

次のメイクファイルがあります

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

次の質問12、および3を見ましたが、 XmlNode.o によって生成されたすべての .o ファイルのリストを取得する方法が見つからないようです。 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

どんな助けでも大歓迎です。

4

1 に答える 1

1

Assuming the info in the comments, this will at least work.

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
于 2012-05-17T00:51:15.953 に答える