我有以下Makefile,我想创建“debug”和“optimal”目标,它们会影响CPPFLAGS和CFLAGS中的值,如下所示:
include Makefile.inc
DIRS = applib
EXE_APPFS = appfs
EXE_APPMOUNT = appmount
EXE_APPINSPECT = appinspect
EXE_APPCREATE = appcreate
BUILD_APPFS =
BUILD_APPMOUNT = -DAPPMOUNT
OBJS_APPFS = main.o appfs.o
OBJS_APPMOUNT = main.o appmount.o
OBJS_APPINSPECT = appinspect.o
OBJS_APPCREATE = appcreate.o
OBJLIBS = libapp.a
LIBS = -L. -lpthread -lstdc++ -ldl -lrt -largtable2 -lm ./libapp.a /usr/lib64/libfuse.a
# Optimization settings.
debug: CPPFLAGS=$(CPPFLAGS_DEBUG)
debug: CFLAGS=$(CFLAGS_DEBUG)
debug:
@true
optimal: CPPFLAGS=$(CPPFLAGS_OPTIMAL)
optimal: CFLAGS=$(CFLAGS_OPTIMAL)
optimal:
@true
appfs: appfs.o $(OBJLIBS)
@echo "stuff is done here"
appmount: appmount.o $(OBJLIBS)
@echo "stuff is done here"
appmount_optimal: optimal appmount
我遇到的问题是,“debug”和“optimal”内部的变量赋值无法传递到其他目标(尽管如果我在优化中放置@ echo $(CPPFLAGS),那么这将起作用)。既不是“make optimal appmount”,也不是“make appmount_optimal”能给我期望的结果。
肯定有一种方法可以根据需要是否调试来定义CPPFLAGS和CFLAGS,对吧?