makefile中动态链接库以及makefile高级用法

  

object=test.o ExShell.o

all:libExShell.so test  $(object)

test:test.o
 g++ -o $@ $^ -L. -lExShell
.cpp.o:
 g++ -c -fPIC $<
libExShell.so:ExShell.o
 g++ -fPIC -shared -o $@ $^


clean:
 @rm *.o test libExShell.so

 

这是一个项目中的makefile.很简单的一个makefile.文件有ExShell.cpp,ExShell.h,test.cpp.

生成动态链接库的一个简单makefile

第一行是变量定义

第二行是makefile中的all用法。基本相当于伪目标。后面的依次实现的文件最好从依赖最少的开始,然后再逐渐到依赖多的。

第三行是用一个动态的库来编译一个test执行程序。

第四行是将相应的.o文件用.cpp文件进行编译

第五行是将.o文件生成一个动态so文件。如果以后有多个.o的话,直接添加.o 就可以了。

clean:

  也是一个伪目标。只有打 make clean才会执行。 完整的应该是.PHONY:clean.

 

 

还有makefile 的高级用法和shell命令配合使用

  如果一个项目中有多个文件夹,每个文件夹下面有一个makefile ,那么你就可以在这些文件夹的上级目录中再建立一个makefile。让它依次执行每个文件夹里面的makefile.

    这个makefile 的内容为:

  SUBDIRS=practise transgateway
all:
 for i in $(SUBDIRS);do \
  echo "cd $$i....";  \
  (cd $$i; $(MAKE)); done
clean:
 for i in $(SUBDIRS);do \
  echo "makeclean $$i..."; \
  (cd $$i;$(MAKE)); done

  其中$$i 比较有争议,在这里可以把它理解为在这种循环下定位到循环中的每一个变量的用法。$(MAKE)是shell中执行 make 命令。在其前面用$()来引用。是用这种形式执行shell命令的格式。

 

 

 

 

转载于:https://www.cnblogs.com/gui--li/archive/2012/07/28/2613302.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值