У меня есть следующие сделать файлКак связать файлы в разных папках, созданных путем вызова нескольких файлов 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
Любая помощь будет оценена.
Вы читаете [Рекурсивный взгляд считается вредным] (http://miller.emu.id.au/pmiller/books/rmch/)? –
Кажется, полезной информации спасибо. – mihajlv
Итак ... в правиле 'XmlNode.o' вы хотите запустить Make в' XmlPath/', используя' XmlPath/Makefile', который будет создавать несколько файлов .o в 'XmlPath /', а затем вы хотите использовать список этих файлов в главном make-файле? – Beta