Makefile的工作非常奇怪

Makefile的工作非常奇怪,makefile,Makefile,我编写了一个非常简单的Makefile,如下所示: CXX = g++ CFLAG = -g -I../include XNNLIB = ../src/cpuxnn.a PROGS = testcpu all: $(PROGS) %: %.c $(XNNLIB) (this is a tab here)$(CXX) $(CFLAG) -o $@ $^ “make”启动g++的方式如下: CXX = g++ CFLAG = -g -I../include XNNLIB = ../src/cp

我编写了一个非常简单的Makefile,如下所示:

CXX = g++
CFLAG = -g -I../include
XNNLIB = ../src/cpuxnn.a
PROGS = testcpu

all: $(PROGS)

%: %.c $(XNNLIB)
(this is a tab here)$(CXX) $(CFLAG) -o $@ $^
“make”启动g++的方式如下:

CXX = g++
CFLAG = -g -I../include
XNNLIB = ../src/cpuxnn.a
PROGS = testcpu

all: $(PROGS)

%: %.c $(XNNLIB)
(this is a tab here)$(CXX) $(CFLAG) -o $@ $^
g++testcpu.cpp-o testcpu

CFLAG变量发生了什么变化????为什么指挥部的秩序如此混乱?
我搜索研究,但没有答案。请帮忙

> p>您已经为> C.<代码>文件编写了一个模式规则,但Posie正在查找一个<代码> .CPP文件,因此它使用内置的编译C++的规则编译.< /P> 您需要更改模式规则以使用
%.cpp
而不是
%.c


<> >使用变量名为 CfLaS> <代码>(对于C)和 CXXFLAGG/<代码>(C++),而不是代码> cFLAG/<代码> < /P> < P> >您为>代码>文件>编写了一个模式规则,但Posiy正在查找<代码> .CPP < /C>文件,因此使用内置的编译规则C++编译.< /P> 您需要更改模式规则以使用
%.cpp
而不是
%.c


<> >使用变量名为 CfLaS> <代码>(对于C)和 CXXFLAGG/<代码>(C++),而不是代码> cFLAG/<代码> < /P> < P> >您为>代码>文件>编写了一个模式规则,但Posiy正在查找<代码> .CPP < /C>文件,因此使用内置的编译规则C++编译.< /P> 您需要更改模式规则以使用
%.cpp
而不是
%.c


<> >使用变量名为 CfLaS> <代码>(对于C)和 CXXFLAGG/<代码>(C++),而不是代码> cFLAG/<代码> < /P> < P> >您为>代码>文件>编写了一个模式规则,但Posiy正在查找<代码> .CPP < /C>文件,因此使用内置的编译规则C++编译.< /P> 您需要更改模式规则以使用
%.cpp
而不是
%.c

通常使用名为
CFLAGS
(对于C)和
cxflags
(对于C++)的变量,而不是
CFLAG

默认规则(如此处意外使用的规则)默认情况下使用
CFLAGS
cxflags
。默认规则(如此处意外使用的规则)默认情况下,使用
CFLAGS
cxflags
完全用于该目的。默认规则(如此处意外使用的规则)默认情况下使用
CFLAGS
cxflags
完全用于该目的。默认规则(如此处意外使用的规则)默认情况下,使用
CFLAGS
cxflags
来实现此目的。