У меня есть мастер Makefile
, который вызывает submakefiles внутри каталогов.Эти вложенные файлы создаются автоматическими инструментами, начиная с файлов Makefile.am
и configure.ac
.
Первой целью всего проекта является разделяемая библиотека, в то время как остальные являются исполняемыми файлами, которые ссылаются на нее (поэтому существует зависимостьв основном Makefile
).
Проблема в том, что я вижу только результаты компиляции общей библиотеки, в то время как другие проекты просто печатают предупреждения и ошибки (я полагаю, просто текст stderr
).
Я не могу понять, что является причиной такого поведения, так как все проекты вызываются из одного и того же правила в мастере Makefile
, а все субмакефайлы автоматически генерируются из очень кажущихся файлов конфигурации.
Фрагмент master Makefile
, который компилирует все цели, выглядит следующим образом:
SUBDIRS = libMylib app1 app2 app3
$(SUBDIRS):
$(ECHO) "-> Building $@"
$(MAKE) -C $@
$(ECHO) "-> Build of $@ finished."
Вывод «libMylib» выглядит так:
-> Building libMylib
libtool: compile: ppc-linux-gcc -DHAVE_CONFIG_H -I. -I/opt/ELDK/ppc_8xx/usr/include/ -I/opt/ELDK/ppc_8xx/include/ -Wall -std=gnu99 -O2 -MT libMylibF1.lo -MD -MP -MF .deps/libMylibF1.Tpo -c libMylibF1.c -fPIC -DPIC -o .libs/libMylibF1.o
...
libtool: link: ppc-linux-gcc -shared -fPIC -DPIC .libs/libMylibF1.o .libs/libMylibF2.o .libs/libMylibF3.o -Wl,-rpath -Wl,/opt/ELDK/ppc_8xx/lib -Wl,-rpath -Wl,/opt/ELDK/ppc_8xx/lib -lz -lpthread -O2 -Wl,-soname -Wl,libMylib.so.0 -o .libs/libMylib.so.0.0.0
libtool: link: (cd ".libs" && rm -f "libMylib.so.0" && ln -s "libMylib.so.0.0.0" "libawmg.so.0")
libtool: link: (cd ".libs" && rm -f "libMylib.so" && ln -s "libMylib.so.0.0.0" "libMylib.so")
libtool: link: ( cd ".libs" && rm -f "libMylib.la" && ln -s "../libMylib.la" "libMylib.la" )
-> Build of libAwmg finished.
В то время как вывод любого"appN" это:
-> Building app1
app1F1.c: In function `app1F1Func1':
app1F1.c:161: warning: unused variable `varA'
app1F2.c:85: warning: `app1F2FuncX' defined but not used
-> Build of app1 finished.
Может кто-нибудь, пожалуйста, помогите мне?
РЕДАКТИРОВАТЬ:
Я обнаружил, что я мог видеть компиляциив "libMylib", потому что это "libtoolized".Если я "libtoolize" другой проект, я могу видеть компоновщик часть вывода (libtool: link:...
).
Таким образом, учитывая, что make
вызывает оболочку (sh
) для каждой строки в правиле, что $ (MAKE) равно просто «make» и, по умолчанию, make
является многословным, почему субмаке не печатает свой вывод на стандартный вывод?
Какие флаги могут быть переданы ему, чтобыэто происходит?