最近做的项目经常需要在x86和arm两个平台上测试,需要使用两套编译器,一套系统自带,一套来自于交叉编译环境。这时就需要为两个平台分别编写Makefile,但颇为不便。查阅资料后得知可以使用make configure调整编译选项,又显牛刀杀鸡。
一种较为简便的方式是在使用make指令时,添加额外参数以改变脚本中某变量的值,配合Makefile中的条件语句ifeq来控制编译过程。
CFLAGS+=-Werror -O2
ifeq ($(arm),true)
CXX=arm-hisiv300-linux-uclibcgnueabi-g++
CC=arm-hisiv300-linux-uclibcgnueabi-gcc
TARGETNAME=sockcli_arm
else
CXX=g++
CC=gcc
TARGETNAME=sockcli
endif
$(TARGETNAME):main.o send_proc.o recv_proc.o main_proc.o
$(CXX) $(CFLAGS) -o $(TARGETNAME) main.o send_proc.o recv_proc.o main_proc.o
main.o:main.cpp send_proc.h recv_proc.h main_proc.h
$(CXX) $(CFLAGS) -c main.cpp
main_proc.o:main_proc.cpp main_proc.h send_proc.h recv_proc.h
$(CXX) $(CFLAGS) -c main_proc.cpp
send_proc.o:send_proc.cpp send_proc.h
$(CXX) $(CFLAG