使用c++;而不是g++;-为什么? 我似乎有一个问题,要使我的MaFIX文件正确地构建我的C++文件。我的makefile代码如下;我试图编译的文件名为“avl.cc”(该文件工作正常,编译正确)
但是,当我输入命令使用c++;而不是g++;-为什么? 我似乎有一个问题,要使我的MaFIX文件正确地构建我的C++文件。我的makefile代码如下;我试图编译的文件名为“avl.cc”(该文件工作正常,编译正确),c++,makefile,C++,Makefile,但是,当我输入命令make或makeall时,我得到 c++ avl.cc -o avl 我想要的-g标志中的调试符号不会出现。类似的makefile(仅更改PROGS变量)适用于类似的项目,因此我不确定我做错了什么。有人有什么建议吗?谢谢 您没有“avl”的目标,因此make使用默认规则 尝试将makefile更改为: CC=g++ CFLAGS=-g -O2 PROGS=avl all: $(PROGS) $(PROGS): $(CC) $(CFLAGS) -o $
make
或makeall
时,我得到
c++ avl.cc -o avl
我想要的
-g
标志中的调试符号不会出现。类似的makefile(仅更改PROGS
变量)适用于类似的项目,因此我不确定我做错了什么。有人有什么建议吗?谢谢 您没有“avl”的目标,因此make使用默认规则
尝试将makefile更改为:
CC=g++
CFLAGS=-g -O2
PROGS=avl
all: $(PROGS)
$(PROGS):
$(CC) $(CFLAGS) -o $@ $@.cc
.PHONY: clean
clean:
rm $(PROGS)
发件人:
这是非常重要的,你要认识到它的有限范围
自动变量值可用:它们仅在
食谱。特别是,您不能在系统中的任何位置使用它们
规则的目标列表;它们在那里没有价值,将扩展到世界各地
空字符串
这样,你不能使用<代码> $@ /CODE作为规则,这意味着使用了MaFag文件的默认C++编译规则,并且因为你没有使用好的变量名,所以它们也被忽略了。
<> >代码> > CXX<代码> >代码> cFLAGs<代码> >代码> CXXFLASK< <代码>为C++。< /P>运行<代码> -P<代码>。您需要
CXX=g++
和cxflags=-Wall-g-O2
;同样使用remake
作为remake-x
和(如果您的GNUmake
足够新)make--trace
您希望$@:
为您做什么?因为无论你期待什么,它都不会那么做。在make处理中,该变量在该点不存在。
CC=g++
CFLAGS=-g -O2
PROGS=avl
all: $(PROGS)
$(PROGS):
$(CC) $(CFLAGS) -o $@ $@.cc
.PHONY: clean
clean:
rm $(PROGS)