我已经四处寻找这个问题,但似乎除了我之外没有人拥有它,这就是我现在要问的原因。
如果有这个基本的makefile:
CCPP = arm-none-linux-gnueabi-g++
CFLAGS = "-WALL -DPLATFORM_TARGET -DPRINT_MESSAGE"
LIB = lib/libarm.a
LDFLAGS = -lpthread
OBJECTS = $(wildcard ./*/*.o)
PROG = /exports/appl
MODULES = lib src
all: $(PROG)
$(CCPP) $(LDFLAGS) $(OBJECTS) $(LIB) -o $(PROG)
$(PROG): $(MODULES)
@for i in $(MODULES); do (cd $$i && $(MAKE) \
CCPP=$(CCPP) LDPP=$(CCPP) CFLAGS=$(CFLAGS) LDFLAGS=$(LDFLAGS)) || exit 1 ;\
done
clean:
@for i in $(MODULES); do (cd $$i && $(MAKE) clean) || exit 1 ; done
rm $(PROG)
lib:
ar cr ../lib/$(LIB) $(OBJECTS)
这行得通。它获取其中的任何源文件lib
,src
并将其编译并很好地链接在一起。(通过使用在这些文件夹中找到的本地 makefile,如果需要,我也可以发布)
无论如何,我现在想要的是-D
有条件地添加更多指令。我试过了:
ifdef ALLOW_BACKTRACE
CFLAGS += -DALLOW_BACKTRACE
LDFLAGS += -rdynamic
endif
并且:
ifdef ALLOW_BACKTRACE
CFLAGS := $(CFLAGS) -DALLOW_BACKTRACE
#endif
或者通过将整个内容放在引号中等...但是每次我尝试时,它都会打开 make 的帮助页面,告诉我它无法“识别”新定义。知道我做错了什么吗?
任何帮助深表感谢。