我正在尝试监视Makefile项目的覆盖范围。
CFLAGS=" -fprofile-arcs -ftest-coverage -g" make test
但是上面的命令似乎不起作用,产生以下内容:
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -g -O2 -MT test.o -MD -MP -MF .deps/test.Tpo -c -o test.o test.c
mv -f .deps/test.Tpo .deps/test.Po
/bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I.. -g -O2 -MT gaussian.lo -MD -MP -MF .deps/gaussian.Tpo -c -o gaussian.lo gaussian.c
从第一行可以看出,调用gcc时CFLAGS的添加不正确。启动“ make”时,如何在gcc的生成选项中包含cflags?
我在Ubuntu 14上使用Bash,如果那很重要。
从环境中获取的变量(这就是您的工作方式)的优先级低于在makefile中设置的变量。因此,如果您的makefile直接设置CFLAGS
变量,例如:
CFLAGS = -g -O2
然后在环境中进行设置不会覆盖此设置。
您可以改为在命令行中添加变量分配:它们几乎优先于makefile中设置的所有内容。因此使用:
make test CFLAGS=" -fprofile-arcs -ftest-coverage -g"
代替。
请参见https://www.gnu.org/software/make/manual/html_node/Values.html