У меня есть мастер Makefile
, который вызывает файлы подкачки внутри каталогов. Эти файлы подкачки создаются с помощью autotools, начиная с Makefile.am
и configure.ac
файлов.Makefile: Почему я не вижу вывод компиляции?
Первой целью всего проекта является разделяемая библиотека, в то время как другие являются исполняемыми файлами, которые ссылаются на нее (так что есть зависимость в основном Makefile
).
Проблема заключается в том, что я могу видеть только вывод компиляции в общей библиотеке, в то время как другие проекты просто печатают предупреждения и ошибки (только текст , я считаю).
Я не могу понять, что вызывает это поведение, поскольку все проекты вызываются из того же правила в главном Makefile
, и все файлы подкачки генерируются автоматически из очень показанных конфигурационных файлов.
Фрагмент мастера Makefile
, который компилирует все цели выглядит следующим образом:
SUBDIRS = libMylib app1 app2 app3
$(SUBDIRS):
$(ECHO) "-> Building [email protected]"
$(MAKE) -C [email protected]
$(ECHO) "-> Build of [email protected] 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.
Может ли кто-нибудь мне помочь?
EDIT:
Я узнал, что я был в состоянии видеть вещи компиляции в «libMylib», потому что это «libtoolized». Если я «libtoolize» другого проекта, я могу увидеть компоновщик на выходе (libtool: link:...
).
Таким образом, учитывая, что make
называет оболочку (sh
) для каждой строки в правиле, что $ (MAKE) равна просто «делать» и, по умолчанию, make
многословен, почему делать submake не печатает его вывод в stdout?
Какие флаги могут быть переданы ему, чтобы это произошло?
В submakefiles генерируются AUTOCONF/Automake, поэтому они немного многословным (и именно поэтому я не отправил его). Если я запустил любой из них непосредственно в терминале, я вижу результат как ожидалось. Дело происходит только при вызове из основного Makefile. Пожалуйста, см. Мое редактирование выше ... – j4x