【问题标题】:How to link files in different folders produced by calling multiple make files?如何链接调用多个make文件产生的不同文件夹中的文件?
【发布时间】:2012-05-14 20:31:36
【问题描述】:

我有以下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.o 是在 XmlNode 文件夹中创建的,因此出现错误

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

任何帮助将不胜感激。

【问题讨论】:

  • 这似乎有用的信息谢谢。
  • 所以...在XmlNode.o 规则中,您想在XmlPath/ 中运行Make,使用XmlPath/Makefile,这将在XmlPath/ 中生成几个.o 文件,然后您想要在主 makefile 中使用这些文件的列表?

标签: c linker makefile


【解决方案1】:

假设 cmets 中的信息,这至少可以工作。

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

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多