仅在指定make debug时添加-pg

时间:2012-11-05 21:58:45

标签: linux ubuntu makefile

我是makefile的新手,我正在尝试添加make debug模式。

我有以下内容:

CXXFLAGS=-Wall -c

debug: $(EXECUTABLE)
     CXXFLAGS+=-pg

all:
....

由于某种原因它分配了它,当我把make debug给它时,它给了我

CXXFLAGS+=-pg
/bin/sh: CXXFLAGS+=-pg: not found
make: *** [debug] Error 127

有没有办法可以避免在调试中再次编写整个all命令,除了使用-pg标志?

我尝试删除debug:target 和CXXFLAGS成功连接-pg标志

2 个答案:

答案 0 :(得分:3)

如果您正在使用gnumake,请添加:

debug: CXXFLAGS += -pg
debug: $(EXECUTABLE)

请注意,通常首先定义all,以便它是默认值。如果debug的规则出现在Makefile中的all之前,debug将成为默认值(如果它是第一个)。

答案 1 :(得分:0)

目标下方的所有制表符缩进行都直接传递给shell子进程,但您的CXXFLAGS行使用的是Makefile语法,而不是有效的shell语法。

更糟糕的是,即使您使用了shell语法,设置变量也不会延续到在不同目标下执行的行;它们只会影响同一目标下的shell命令,然后,只有当所有行都与\转义字符连接时才会生效。

Make将从环境变量中读取值,因此您可以在运行make时设置环境变量,例如(Bourne-family shell):

myprompt$ CXXFLAGS=" -pg $CXXFLAGS" make