我正在开发一个大型固件,我必须将 GNU gprof 添加到它的一些模块(文件目录)中。makefile 具有继承的结构。所以我这样做:
ft/*.o : ft/*.c
CFLAGS += -pg
ft/*.o : ft/*.c
LDFLAGS += -pg
但这给了我一个警告,它会覆盖 CFLAGS,然后将 gprof 添加到所有模块中。我的猜测是 CFLAG 在某个地方很常见。如何确保 CFLAG 仅适用于我想要的模块(目录)部分?
您可以使用特定于目标的变量来做到这一点。
正确的语法是:
ft/*.o : CFLAGS += -pg
ft/*.o : LDFLAGS += -pg
这些是您需要添加的行。
或者,您可以将这些标志添加到可执行文件、共享库和静态库中。目标特定变量传播到其先决条件,即.o
包含二进制文件的文件。