用于跨多个体系结构构建库的Makefile

时间:2017-02-24 01:39:51

标签: c linux makefile

我有一个非常基本的makefile,它具有构建静态库或动态库的目标。它默认为创建静态库。

我希望能够为多种架构构建这个库。我希望能够通过命令行指定我想要构建它的体系结构,以便它在内部获取其他所有内容(CC,AR等的值)。

这样做最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

最简单的建议是在makefile中为不同的体系结构设置环境变量,然后定义将引用该体系结构部分的变量的规则。一些常见值也可以设置并在别处使用。

SPARCCC=/opt/SUNWspro/bin/cross-cc
GCC=/usr/bin/gcc
GCCDEBUG=/usr/bin/gcc
TAR=/usr/bin/tar

sparc: 
    @echo $(SPARCCC) -o a a.c
    @echo ${TAR} cvf a.tar a.*

i386 : 
    @echo $(GCC) -o a a.c
    @echo ${TAR} cvf a.tar a.*
    @echo $(GCCDBX)

sparc和i386有两个不同的目标,并且运行上面脚本的目标将产生如下结果

$ make sparc
/opt/SUNWspro/bin/cc -o a a.c
/usr/bin/tar cvf a.tar a.c a.tar

$ make i386
/usr/bin/gcc -o a a.c
/usr/bin/tar cvf a.tar a.c a.tar