我想make
在目錄中創建所有.cpp
與跟蹤標頭更改。我試圖通過先使GCC輸出的目標具有相關性與-MM
選項來做到這一點,然後追加身體這個目標,將實際調用編譯:GNU使意想不到的行爲
OPTIONS = -std=c++11 -Wall
export
all : $(patsubst %.cpp, %.o, $(wildcard *.cpp))
%.o : %.mkt
make -f $*.mkt
%.mkt : %.cpp
gcc $(OPTIONS) -MM $*.cpp > $&.mkt1
echo gcc $(OPTIONS) -c %.cpp > $*.mkt2
cat $*.mkt1 $*.mkt2 > $*.mkt
然而,不知何故該腳本股形式
的電話g++ -c -o something.o something.cpp
每個.cpp
文件在目錄中。未創建臨時文件.mkt1
,.mkt2
和.mkt
。爲什麼會發生?我如何達到所需的行爲?我正在用mingw在windows上做這個。
如果您在'patsubst'調用中的逗號後面取出空格,它有幫助嗎? – tripleee 2012-08-13 13:02:23
無論如何,如果您打算將它們用作Makefiles,那麼'mkt'文件是否應該有縮進標籤? – tripleee 2012-08-13 13:03:46
@tripleee移除空格不起作用。 '.mkt'文件確實應該有標籤,我的不好,但是在這裏他們甚至沒有創建。 – 2012-08-13 13:06:27