Linux 仅当指定make debug时添加-pg

Linux 仅当指定make debug时添加-pg,linux,ubuntu,makefile,Linux,Ubuntu,Makefile,我是makefile新手,我正在尝试添加make调试模式 我有以下资料: CXXFLAGS=-Wall -c debug: $(EXECUTABLE) CXXFLAGS+=-pg all: .... 出于某种原因,它会分配它,当我放置makedebug时,它会给我 CXXFLAGS+=-pg /bin/sh: CXXFLAGS+=-pg: not found make: *** [debug] Error 127 除了使用-pg标志外,是否有任何方法可以避免在调试中再次写入整个

我是makefile新手,我正在尝试添加make调试模式

我有以下资料:

CXXFLAGS=-Wall -c

debug: $(EXECUTABLE)
     CXXFLAGS+=-pg

all:
....
出于某种原因,它会分配它,当我放置makedebug时,它会给我

CXXFLAGS+=-pg
/bin/sh: CXXFLAGS+=-pg: not found
make: *** [debug] Error 127
除了使用-pg标志外,是否有任何方法可以避免在调试中再次写入整个all命令

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

如果您使用的是gnumake,只需添加:

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

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

如果您使用的是gnumake,只需添加:

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

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

目标下的所有制表符缩进行将直接通过管道传输到shell子进程,但CXXFLAGS行使用的是Makefile语法,而不是有效的shell语法

更糟糕的是,即使使用shell语法,设置变量也不会传递到在不同目标下执行的行;它们只会影响同一目标下的shell命令,然后,仅当所有行都使用转义字符连接时

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


目标下的所有制表符缩进行都直接通过管道传输到shell子进程,但CXXFLAGS行使用的是Makefile语法,而不是有效的shell语法

更糟糕的是,即使使用shell语法,设置变量也不会传递到在不同目标下执行的行;它们只会影响同一目标下的shell命令,然后,仅当所有行都使用转义字符连接时

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


完美的建议:)还有一个问题,有没有办法强迫它重新编译而不进行清理?e、 g.如果我使用-pg标志进行编译调试,但是如果我想要一个常规的make,我将无法进行调试,除非我先进行清理,然后进行
make clean
。除了
debug:clean$(可执行文件)
perfect advice:)之外,我还不知道有什么可靠的方法可以强制使用新标志进行重建。还有一个问题,有没有办法强制它在不进行make clean的情况下重新编译?e、 g.如果我使用-pg标志进行编译调试,但是如果我想要一个常规的make,我将无法进行调试,除非我先进行清理,然后进行
make clean
。除了
debug:clean$(EXECUTABLE)
之外,我不知道有什么可靠的方法可以使用新标志强制重建。您可能需要安装
remake
(应该有一个同名的包)并使用
remake-x
来调试此类问题。您可能需要安装
remake
(应该有一个同名的包)并使用
remake-x
调试此类问题。