1.获取 系统 位数
创新互联公司主要从事成都网站建设、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务雁塔,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575ARCH =x64
ifeq ($(shell getconf LONG_BIT), 32)
ARCH = x86
endif
all:
ifeq ($(ARCH),x64)
echo "x64"
else
echo "x86"
endif
备注 这里 的 标红部分不能有缩进,否则 会引起、
ifeq (x64, x64)
/bin/sh: -c: line 0: syntax error near unexpected token `x64,'
/bin/sh: -c: line 0: `ifeq (x64, x64)'
原因
Makefile中,当 ifeq, else 和 endif 没有缩进时,make会正确识别它们,将其作为分支选择的标识
当 ifeq, else 和 endif 有缩进时,make将它们当做普通的shell script
参考http://blog.csdn.net/yasi_xi/article/details/39155529 感谢博主
2. make 遍历 目录
有时候,在开发目录,依赖的 动态库 是 放在不同的 子目录下,防止混淆,便于管理,但发布到现网时,又希望这写依赖库能放到同一个 目录lib下,
在makefile 尾部 增加 下述,可以遍历 依赖库 子目录,并拷贝其 lib.so, 注,要求 所有的 依赖库子目录下都有 lib子目录
DEP_DIRS := $(shell ls ./dep/)
DEP_LIB_CP:
for dir_dep in $(DEP_DIRS);\
do \
cp -f ./dep/$$dir_dep/lib/lib* ./lib/; \
done \
3.make 传参数 和多个condition
make args=value
举例
ifeq ($(VV),suse32) echo $(VV) else ifeq ($(VV), suse64) echo $(VV) else echo $(VV) endif endif
make VV=suse32 输出suse32
make VV=suse64 输出suse64
make VV=other 输出other
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。