2012-05-14 28 views
1

我有以下使文件如何鏈接通過調用多個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.oXmlNode.oXmlNode文件夾製成,所以我得到的錯誤

gcc: XmlAttributeNode.o: No such file or directory 
gcc: XmlNode.o: No such file or directory 

我看着下面的問題123,但我似乎無法找到我如何獲得由XmlNode.o生成的所有.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 

任何幫助,將不勝感激。

+1

你看過[Recursive Make Considered Harmful](http://miller.emu.id.au/pmiller/books/rmch/)嗎? –

+0

這似乎有用的信息謝謝。 – mihajlv

+0

因此...在'XmlNode.o'規則中,您想使用'XmlPath/Makefile'在'XmlPath /'中運行Make,這會在'XmlPath /'中生成幾個.o文件,然後您想要使用主makefile文件的列表? – Beta

回答

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 
相關問題