zoukankan      html  css  js  c++  java
  • 常见makefile写法

    原文地址:blog.csdn.net/ghostyu/article/details/7755177

    1、目标名称,摆脱手动设置目标名称

    [cpp] view plaincopy
     
    1. TARGET = $(notdir $(CURDIR))  
    2. all:$(TARGET)  
    3.     CMD....  

    $(CURDIR) 表示Makfile当前目录全路径

    $(notdir $(path)) 表示把path目录去掉路径名,只留当前目录名
    这样就可以得到Makefile当前目录名称,用目录名作为目标程序名是一个不错的选择

    2、使用include,把所有Makefile共享的设置包含进来

    [cpp] view plaincopy
     
    1. BASE_DIR = /root/DM36x  
    2. include $(BASE_DIR)/Rules.make  
    3.   
    4. XDC_PATH = $(DMAI_INSTALL_DIR)/packages  
    [cpp] view plaincopy
     
    1. DMAI_INSTALL_DIR在Rules.make中已经设置过,这样,需要使用DMAI_INSTALL_DIR变量的时候只要include 这个Rules.make接可以了  

    3、遍历遍历所有特定的源文件

    [cpp] view plaincopy
     
    1. SOURCES = $(wildcard *.c)  
    2. HEADERS = $(wildcard *.h)  

    如果当前目录先有 main.c  func.c  func.h 

    这样SOURCES变量就等于main.c  func.c

    HEADERS变量就等于func.h

    这样就每次添加源文件后 就不需要重新修改makefile了

    4、替换文件名称

    [cpp] view plaincopy
     
    1. OBJFILES = $(SOURCES:%.c=%.o)  

    如果SOURCES等与3中的main.c和func.c

    这样OBJFILES就等于main.o func.o 

    同样摆脱了手动修改编译的中间文件名

    5、交叉编译设置

    [cpp] view plaincopy
     
    1. VERBOSE = @  
    2. COMPILE.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(C_FLAGS) $(CPP_FLAGS) -c  
    3. LINK.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(LD_FLAGS)  

    6、编译

    [cpp] view plaincopy
     
    1. $(OBJFILES):    %.o: %.c $(HEADERS)   
    2.   
    3.     @echo Compiling $@ from $<..  
    4.   
    5.     $(COMPILE.c)  -o $@ $<  

    7、

    [cpp] view plaincopy
     
    1. install:    $(if $(wildcard $(TARGET)), install_$(TARGET))  
    2. install_$(TARGET):  
    3.     @install -d $(EXEC_DIR)  
    4.     @install $(TARGET) $(EXEC_DIR)  
    5.     @install $(TARGET).txt $(EXEC_DIR)  
    6.     @echo  
    7.     @echo Installed $(TARGET) binaries to $(EXEC_DIR)..  

    先判断当前目录是否有$(TARGET),如果有,就执行伪目标install_$(TARGET),这个展开了就相当于install_app,如果$(TARGET)等于app的话

  • 相关阅读:
    MTK android flash配置
    MTK平台缩写
    百度员工离职总结:如何做个好员工
    android 分区layout以及虚拟内存布局-小结
    Android eMMC Booting
    Android gingerbread eMMC booting
    Chrome插件开发
    jsonp解决CORS问题
    【好玩】将js代码转为日式表情
    多行文本溢出显示省略号(...)的方法
  • 原文地址:https://www.cnblogs.com/lidabo/p/3976945.html
Copyright © 2011-2022 走看看