Makefile--自动识别编译环境(x86还是arm)进行编译

avatar
作者
筋斗云
阅读量:2

在日常工作中,我们会在虚拟机下的x86系统进行架叉编译,有时需要在arm上直接进行编译。但工程都是一样的,只是Makefile不一样,这时就涉及到Makefile的灵活运用了。以下是一个自动识别编译环境的通用Makefile:

TARGET_ARCH1 := arm ifneq ($(shell uname -m | grep -c 'x86'), 0)     TARGET_ARCH1 := x86 endif  ifeq ($(TARGET_ARCH1),arm)     CXX = g++     CC = gcc else     CXX = arm-linux-gnueabihf-g++     CC = arm-linux-gnueabihf-gcc endif  SRC = $(wildcard ./*.c)                                     #wildcard把指定目录>下的所有后缀是cpp的文件全部展开 OBJS=$(patsubst %.c,%.o,$(SRC))                              #所有.o的变量  all:$(TARGET) target permission:     @chmod 777 run.sh  $(TARGET):$(OBJS)     @echo Linking $(notdir $@)     @$(CXX) -rdynamic -o $@ $^  $(LIBPATH) $(LIBVAR)    #rdynamic      %.o:%.cpp     @echo Compiling $<     @$(CXX)  $(CFLAGS) -c $< -o $@ -fpermissive  .PHONY:clean clean:     rm -rf ./$(TARGET)     rm -rf ./*.o  

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!