我有一個主人Makefile
調用目錄內的子畫面文件。 這些子畫面文件是由自動工具從Makefile.am
和configure.ac
文件開始生成的。Makefile:爲什麼我看不到編譯輸出?
整個項目的第一個目標是共享庫,而其它的是,針對其鏈接(所以在主Makefile
的依賴)的可執行文件。
問題是我只能看到共享庫的編譯輸出,而其他項目只是打印警告和錯誤(我相信只是stderr
文本)。
我不明白是什麼導致了這種行爲,因爲所有的項目都是從主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.
任何人都可以幫我嗎?
編輯:
我發現我能看到「的libmylib」編譯的東西,因爲它是「libtoolized」。 如果我「libtoolize」另一個項目,我可以看到輸出的鏈接器部分(libtool: link:...
)。
因此,考慮到make
要求在規則中的每個線殼(sh
),即$(MAKE)等於只是「做」,默認情況下,make
是冗長的,爲什麼submake不打印其輸出到標準輸出?
哪些標誌可能會傳遞給它,以便發生這種情況?
的submakefiles用了autoconf/automake的產生,所以他們是一個有點冗長,(這就是爲什麼我沒有張貼)。如果我直接在終端中運行它,我會看到預期的輸出。只有在從主Makefile調用時纔會發生。請看我上面的編輯... – j4x 2012-03-01 20:23:35