我正在构建一个提供许多makefile的包,每个makefile都有类似
的硬编码CFLAGS = -g -O2 -Wall ...
CXXFLAGS = -g -O2 -Wall ...
我想放弃-g
选项,但我不想编辑所有的makefile(甚至不能自动编辑sed
或类似的东西)。程序包附带的configure
脚本没有启用/禁用调试选项,但我可以传递CFLAGS
和CXXFLAGS
个变量,并将它们的值连接到CFLAGS
和CXXFLAGS
变量分别包含-g
选项。
是否有一个选项可以在指定的情况下丢弃-g
?像
gcc -option-im-looking-for -g file.c -o file
将构建没有调试符号的二进制文件file
。我不想剥离二进制文件,我希望它被创建剥离。
答案 0 :(得分:11)
您可以通过添加-g
否定 -g0
的效果。说
gcc -g -g0 foo.c -o file.o
将产生与通过说
获得的二进制相同的二进制文件gcc foo.c -o foo.o
引用man gcc
:
-glevel
...
Level 0 produces no debug information at all. Thus, -g0 negates
-g.
答案 1 :(得分:1)
您无需编辑makefile。只需覆盖命令行上的变量:
$ cat Makefile
CFLAGS = -g -Wall
all:
echo $(CFLAGS)
$ make
echo -g -Wall
-g -Wall
$ make CFLAGS=-Wall
echo -Wall
-Wall