linux环境下makefile文件的创建

linux环境下 Makfile 文件的编写 :
  1.环境变量的定义
   a.单独定义环境变量的文件env.sh
   b . env.sh的内容:
        export PROJECT_PATH ="/home/user/project/sources"
        echo  "PROJECT_PATH ="$PROJECT_PATH
        export  LIB_PATH  = ~/lib : ~/usr/bin: $(PROJECT_PATH)/lib
        echo " LIB_PATH="  $LIB_PATH
   c.运行 (env.sh所在的路径下)
     source env.sh
   d.查看环境变量
     env
  2.基本编译变量的定义
  a.定义文件 basetool.mk
  b. basetool.mak的内容:
    CC  := gcc -g
    CPP := g++
    LD  := ld
 
    RM  := rm -f
    CP  := cp
    MV  := mv
    MAKE:= make
  3.makefile文件的定义

   a.在sources路径下定义makefile文件
   b.makefile的内容:
   include $(PROJECT_PATH)/tool/basetool.mk
   
   BUILD_TYPE := exectable
   LOCAL_INC  := -l $(PROJECT_PATH)/source/inc                         //目标代码的路径
   LOCAL_LIB  := media_all media_base  media_object   media_type       //本地的动态库
   
   LIB_MODDULE:= libmedia_all.so                                       //目标动态库          
   BIN_MODULE := media_daemon                                          //执行目标
   INCLUDE    := -I $(PROJECT_PATH)/source/inc \                     
                 -I $(PROJECT_PATH)/source/src                         //头文件的路径
   LIB_OBJECT := media_gdbus.o media_proxy_folder.o                    //动态库所需的目标文件
   BIN_OBJECT := media_daemon.o media_folder.o                         //执行目标所需的目标文件
   LDFLAGS:= -L $(PROJECT_PATH)/lib -L $(PROJECT_PATH)/common/lib  -L $(PROJECT_PATH)/usr/lib -rdymamic  //本地动态库的路径


//首先执行此处,然后根据依赖关系,一步步向下执行,从底层比较已编译的文件与现在将要编译文件的变更,如果现在文件较新,编译此文件,然后一步步向上执行,否则跳过执行下一个文件。
all: MediaExe
     @echo $(PWD) "-make MediaExe all ......"
     @echo $(BIN_MODULE)
//生成可执行文件
MediaExe: MediaLib $(BIN_OBJECT)
          $(CC) $(INCLUDE) -wall -o $(BIN_MODULE) $(BIN_OBJECT)  -L $(PROJECT_PATH)/lib  -L $(PROJECT_PATH)/common/lib $(addprefix  -l,$(LOCAL_LIB))
          $(CP) $(BIN_MODULE) $(PROJECT_PATH)/bin


//生成目标动态库
MediaLib  : $(LIB_OBJECT)
          $echo $(PWD) "-make MediaLib..... "
          $(CC) -shared -o $(LIB_MODDULE) $( LIB_OBJECT) $(LDFLAGS)  -ltarget_base -ltaget_object   -lmedia_type
          $(CP) $(BIN_MODULE) $(PROJECT_PATH)/lib
// 生成对象文件
media_gdbus.o :
         @echo $(PWD) "-make media_gdbus.o ......"
         @(CC) $(INCLUDE)    -wall -o media_gdbus.c      
     
media_proxy_folder.o: media_proxy_folder.o
                     @echo $(PWD) "-make media_proxy_folder ......"
                     @(CC) $(INCLUDE)    -wall -o media_proxy_folder.c 
                          
media_folder.o: media_gdbus.o 
               @echo $(PWD) "-make media_folder ......"
               @(CC) $(INCLUDE)    -wall -o media_folder.c  


media_daemon.o: media_folder.o 
               @echo $(PWD) "-make media_daemon ......"
               @(CC) $(INCLUDE)    -wall -o media_daemon.c  


//清除所有的对象文件、动态库以及可执行目标
.PHONE: clean                           
clean :
        @echo “-make clean Exe”
        @-$(RM)  *.o             
        @-$(RM)  *.bak
        @-$(RM)  $(LIB_MODDULE)

        @-$(RM)  $(BIN_MODULE)

  3.运行

  在makefile文件的路径下,执行如下指令:

       make

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值