常见的makefile写法【转】

简介:

转自:http://blog.csdn.net/ghostyu/article/details/7755177

复制代码
版权声明:本文为博主原创文章,未经博主允许不得转载。

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

[cpp] view plain copy

    TARGET = $(notdir $(CURDIR))  
    all:$(TARGET)  
        CMD....  

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

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

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

[cpp] view plain copy

    BASE_DIR = /root/DM36x  
    include $(BASE_DIR)/Rules.make  
      
    XDC_PATH = $(DMAI_INSTALL_DIR)/packages  

[cpp] view plain copy

    DMAI_INSTALL_DIR在Rules.make中已经设置过,这样,需要使用DMAI_INSTALL_DIR变量的时候只要include 这个Rules.make接可以了  

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

[cpp] view plain copy

    SOURCES = $(wildcard *.c)  
    HEADERS = $(wildcard *.h)  

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

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

HEADERS变量就等于func.h

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

4、替换文件名称

[cpp] view plain copy

    OBJFILES = $(SOURCES:%.c=%.o)  

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

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

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

5、交叉编译设置

[cpp] view plain copy

    VERBOSE = @  
    COMPILE.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(C_FLAGS) $(CPP_FLAGS) -c  
    LINK.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(LD_FLAGS)  


6、编译

[cpp] view plain copy

    $(OBJFILES):    %.o: %.c $(HEADERS)   
      
        @echo Compiling $@ from $<..  
      
        $(COMPILE.c)  -o $@ $<  

7、

[cpp] view plain copy

    install:    $(if $(wildcard $(TARGET)), install_$(TARGET))  
    install_$(TARGET):  
        @install -d $(EXEC_DIR)  
        @install $(TARGET) $(EXEC_DIR)  
        @install $(TARGET).txt $(EXEC_DIR)  
        @echo  
        @echo Installed $(TARGET) binaries to $(EXEC_DIR)..  

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

 





本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/7211730.html,如需转载请自行联系原作者

相关文章
|
2月前
|
Shell
Makefile函数的使用(1)
Makefile函数的使用(1)
10 0
|
11月前
|
Linux C语言
多文件目录Makefile的写法
多文件目录Makefile的写法
|
11月前
|
缓存
关于CMake中不同变量的用法与总结
关于CMake中不同变量的用法与总结
117 0
CMake教程2:CMake语法-变量、流程控制、函数
CMake教程2:CMake语法-变量、流程控制、函数
102 0
|
IDE Linux Shell
【Makefile】简单的Makefile编写
【Makefile】简单的Makefile编写
|
Unix Linux C语言
MakeFile基本使用
MakeFile Making makefile demo # Run this line when useing `make` command # default is the target which is an output id in this makefile # name after `...
913 0
|
C++ C语言
常见的makefile写法【转】
转自:http://blog.csdn.net/ghostyu/article/details/7755177 版权声明:本文为博主原创文章,未经博主允许不得转载。 1、目标名称,摆脱手动设置目标名称 [cpp] view plain copy TARGET = $(...
829 0