zoukankan      html  css  js  c++  java
  • 一点一点学写Makefile(2)-自动搜所当前目录下的所有源文件

    上个博客我们使用的是笨方法添加源文件,本次我要实现的是遍历文件夹来获得所有的cpp文件


    1. //makefile  
    2.   
    3.   
    4. CROSS =   
    5. CC = $(CROSS)gcc  
    6. CXX = $(CROSS)g++  
    7. DEBUG = -g -O2  
    8. CFLAGS = $(DEBUG) -Wall -c  
    9. RM = rm -rf  
    10.   
    11. SRCS = $(wildcard ./*.cpp)  
    12. OBJS = $(patsubst %.cpp, %.o, $(SRCS))  
    13.   
    14. VERSION = 1.0.0.0  
    15. TARGET = test.$(VERSION)  
    16.   
    17. $(TARGET) : $(OBJS)  
    18.     $(CXX) $^ -o $@  
    19.   
    20. $(OBJS):%.o : %.cpp  
    21.     $(CXX) $(CFLAGS) $< -o $@  
    22.   
    23.   
    24. clean:  
    25.     $(RM) $(TARGET) *.o  


    第十一行功能:自动搜索指定目录下的所有cpp文件,如果没有指定,默认是当前目录,指定方法 - SRCS = $(wildcard ./src/*.cpp)

    第十二行功能:通过cpp文件获得与之同名的*.o类型的文件

    第二十行功能:将*.o文件和*.cpp文件想对应起来(这里会默认看成一个循环,即一个*.o和一个*.cpp文件均对应,直到所有的cpp文件和*.o文件都编译完成)

    第二十四行,因为生成的目标文件包含版本信息,因此文件名不确定,建议使用$(TARGET)的形式,这是引用一个变量,在第十五行已有定义


    下一节,我将会给大家讲,如何添加第三方库和第三方库所使用的头文件

  • 相关阅读:
    停下来,等等灵魂(二)
    停下来,等等灵魂(一)
    swoole流程图
    使用 Spring Cloud Sleuth、Elastic Stack 和 Zipkin 做微服务监控
    Portainer实战
    Docker 容器日志分析
    docker容器日志查看
    java(集合框架)(转)
    js中const,var,let区别与用法(转)
    【MySQL】Mac通过brew安装的MySQL重启方法
  • 原文地址:https://www.cnblogs.com/catgatp/p/6527228.html
Copyright © 2011-2022 走看看