我想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