在开发过程中,获取同一系统信息时,需要根据系统是MIPS架构还是X86架构来使用不同的代码,要解决这种情况就需要在编译时,在makefile中根据系统架构来使用宏开关,以下是在makefile中使用shell语句判断架构的代码:
UVAL = $(shell uname -a) //使用shell的uname命令获取系统信息
......
%.o:%.c
@if [[ "$(UVAL)" =~ "mips" ]];\ //使用shell判断系统信息中是否包含mips信息,如果有则说明是mips架构,在makefile中shell语句应该是在一行中,所以分行的话需要指定\说明是一行
then\
echo "FOUND";\
$(cc) -c $< -o $@ $(cflags) $(option) $(inc) -DMIPS_CPU;\ //mips架构的系统在编译时定义宏MIPS_CPU
else\
echo "NOT FOUND";\
$(cc) -c $< -o $@ $(cflags) $(option) $(inc);\
fi
在需要使用宏MIPS_CPU的代码处使用以下开关:
#ifdef MIPS_CPU
//执行MIPS架构的代码
#else
//执行其他架构的代码
#endif
阅读(1696) | 评论(0) | 转发(0) |