Linux 仅当指定make debug时添加-pg
我是makefile新手,我正在尝试添加make调试模式 我有以下资料: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标志外,是否有任何方法可以避免在调试中再次写入整个
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
调试此类问题。