g+的参数顺序+;解析makefile时已洗牌

g+的参数顺序+;解析makefile时已洗牌,makefile,gnu-make,Makefile,Gnu Make,以下生成文件: #Regular c++ rules CXX=g++ CXXFLAGS=-Wall -march=native -ffast-math -O3 CXX_OBJECTS=AbsNode.o rle16.o rle8.o # Link command: test : $(CXX_OBJECTS) $(CXX) $(CXX_OBJECTS) -o test # Compilation commands: $.o : %.cpp $(CXX) -c $< $(

以下生成文件:

#Regular c++ rules
CXX=g++
CXXFLAGS=-Wall -march=native -ffast-math -O3
CXX_OBJECTS=AbsNode.o rle16.o rle8.o

# Link command:
test : $(CXX_OBJECTS)
    $(CXX) $(CXX_OBJECTS) -o test

# Compilation commands: 
$.o : %.cpp
    $(CXX) -c $< $(CXXFLAGS) -o $@
当我期待的时候

g++ -c AbsNode.cpp -Wall -march=native -ffast-math -O3  -o AbsNode.o 
g++ -c rle16.cpp -Wall -march=native -ffast-math -O3 -o rle16.o 
g++ -c rle8.cpp -Wall -march=native -ffast-math -O3 -o rle8.o 
为什么g++的参数顺序与makefile中规定的规则相比发生了切换

$.o : %.cpp
您键入了$,而不是%,这已变成非模板规则。但是make有一个C++文件的默认规则,它是取而代之的。参数的顺序与此内部规则匹配

$.o : %.cpp