SRC_ROOT:=.
INC_ROOT:=.
CPP_EXCLUDE_LIST:= #排除的cpp文件,需要加路径
C_EXCLUDE_LIST:= #排除的c文件,需要加路径
LIB_ROOT:=
BUILD_DIR:=../build
TARGET:=main #cfg9516
OBJ_ROOT_DIR:=../obj
CC:=arm-linux-gnueabihf-g++
C:=arm-linux-gnueabihf-gcc
DEF:=-DLINUX #宏定义,如-DLINUX -DTEST
LDFLAGS:=-lpthread #-shared#编译动态库需要添加-shared
CFLAGS:=-w -fpermissive -std=c99 #-fPIC#编译动态库需要添加-fPIC
CPPFLAGS:=-w -fpermissive -std=c++11 #-fPIC#编译动态库需要添加-fPICINC:=$(addprefix -I ,$(shell find $(INC_ROOT) -type d))
SRC_DIR:=$(shell find $(SRC_ROOT) -type d)
C_SRC:=$(filter-out $(C_EXCLUDE_LIST),$(subst ./,,$(wildcard $(addsuffix /*.c,$(SRC_DIR)))))
CPP_SRC:=$(filter-out $(CPP_EXCLUDE_LIST),$(subst ./,,$(wildcard $(addsuffix /*.cpp,$(SRC_DIR)))))
OBJS:=$(addprefix $(OBJ_ROOT_DIR)/,$(C_SRC:.c=.o) $(CPP_SRC:.cpp=.o))
CPP_DEPS:=$(addprefix $(OBJ_ROOT_DIR)/,$(CPP_SRC:.cpp=.d))
C_DEPS:=$(addprefix $(OBJ_ROOT_DIR)/,$(C_SRC:.c=.d))$(BUILD_DIR)/$(TARGET):$(OBJS)@mkdir -p $(BUILD_DIR)
ifneq ($(strip $(LIB_ROOT)),) #判断LIB_ROOT是否为空$(CC) $^ $(addprefix -L ,$(shell find $(LIB_ROOT) -type d)) $(addprefix -l:,$(notdir $(shell find $(LIB_ROOT) -name "libbylhDriver*.so"))) $(LDFLAGS) -o $@
else$(CC) $^ $(LDFLAGS) -o $@
endif$(CPP_DEPS):$(OBJ_ROOT_DIR)/%.d:%.cpp@mkdir -p $(dir $@)@$(CC) -MM $(INC) $(CPPFLAGS) $(DEF) $< > $@@sed -i ":a;N;s|\\n||g;ta" $@@sed -i 's|\\||g' $@@sed -i -re 's|\w+\.o:\s*((\w+\/)+).+|\1\0|' $@@sed -i -re 's|^|$(OBJ_ROOT_DIR)\/|' $@@echo " $(CC) $(CPPFLAGS) $(DEF) $(INC) -c $< -o $(OBJ_ROOT_DIR)/$*.o" >> $@$(C_DEPS):$(OBJ_ROOT_DIR)/%.d:%.c@mkdir -p $(dir $@)@$(C) -MM $(INC) $(CFLAGS) $(DEF) $< > $@@sed -i ":a;N;s|\\n||g;ta" $@@sed -i 's|\\||g' $@@sed -i -re 's|\w+\.o:\s*((\w+\/)+).+|\1\0|' $@@sed -i -re 's|^|$(OBJ_ROOT_DIR)\/|' $@@echo "  $(C) $(CFLAGS) $(DEF) $(INC) -c $< -o $(OBJ_ROOT_DIR)/$*.o" >> $@-include $(C_DEPS) $(CPP_DEPS).PHONY:clean
clean:rm -rfd $(BUILD_DIR)/$(TARGET) $(OBJ_ROOT_DIR)

万能Makefile相关推荐

  1. 万能makefile深入浅出 - 第四篇

    1. 本示例演示的是编译多个可执行程序,库文件,需链接动态库静态库,且需先编译库,并且库与库之间,可执行程序之间皆存在依赖关系的makefile的编写方式(自己写的简单动态库编译和使用,自己写的简单静 ...

  2. 万能makefile深入浅出 - 第三篇

    1. 本示例演示的是需链接动态库静态库,且需先编译库的makefile的编写方式(自己写的简单动态库编译和使用,自己写的简单静态库的编译和使用) 2. 目的是帮助那些新接触makefile的新手如何快 ...

  3. 万能makefile深入浅出- 第一篇

    1. 本示例演示的是最简单的,即只需编译源文件,不需链接库的makefile的编写方式 2. 目的是帮助那些新接触makefile的新手如何快速写出可用的makefile,下载本例后完全可以稍作修改就 ...

  4. 万能makefile深入浅出 - 第二篇

    1. 本示例演示的是需链接动态库静态库,但不需编译库的makefile的编写方式(动态库是jsoncpp的使用,静态库是tinyxml的使用) 2. 目的是帮助那些新接触makefile的新手如何快速 ...

  5. arm-linux-gcc makefile,ARM-LINUX-GCC简易万能makefile

    #Created by JamieChu 2019-06-19 ; #几乎全自动了,改一下TARGET_BIN的值,然后扔到工程目录下,运行make命令就可以了; #也可以自行修改VPATH来搜寻其他 ...

  6. 万能 Makefile 模板

    在 Linux 编程时,对于很多小工程来说,很多时候似乎没有必要用 autoconf 和 automake 工具来生成 Makefile,反而自己写一个 Makefile 更省事.这里给大家提供一个简 ...

  7. 万能make file

    ################################################# # Generic makefile - 万能Makefile # for compiling an ...

  8. Makefile中的一些小知识点,及常用的makefile举例

    一.gcc -s(注意是小写的s)命令是什么意思?为什么用此命令编译后的程序比用优化后的程序还小? 这个参数会把符号表从最终的可执行文件中删除.没有符号表,你就不能用gdb调试了,常见的用法是: 比方 ...

  9. Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)

    from: Makefile常用万能模板(包括静态链接库.动态链接库.可执行文件) 本文把makefile 分成了三份:生成可执行文件的makefile,生成静态链接库的makefile,生成动态链接 ...

最新文章

  1. java list 多条件排序_java – 如何对arraylist执行一系列排序操作(多个排序条件)
  2. OpenCV-Python中的两种图像通道分离法
  3. Celt Codec简单使用方法
  4. html js 做的小游戏,用js做一个小游戏平台 (一)
  5. JS中怎样比较两个时分格式的时间大小
  6. How to apply for the PG studies as a UG
  7. 删除我的电脑里面软件快捷方式
  8. C# 答群友:把窗体应用改成类库输出然后去引用
  9. .net core 上 K8S(三)Yaml文件运行.netcore程序
  10. [Redis6]新数据类型_Geospatial
  11. 6-23 分离链接法的删除操作函数 (20 分)
  12. Spring配置文件约束头
  13. python读取mysql中表内数据转换成json_使用python将mySql查询结果转换为json
  14. Cassandra 简介
  15. php 模拟请求工具,http-mock-master模拟HTTP请求库
  16. springcloud 图片和数据一起提交_SpringCloud网上商城系统(附源码及教程)
  17. oracle 11g dataguard创建的简单方法
  18. MaNGOS大芒果服务端源码研究(一)——环境安装与源码下载
  19. python 拦截windows弹窗广告_通过python实现弹窗广告拦截过程详解
  20. 什么是天气预报 API 接口?如何获取天气预报 API?

热门文章

  1. 文字识别中CTC损失的直觉解释---转载自AI公园
  2. ADAU1452DSP+E2PROM自启动运行
  3. 调查一下您对四川灾区的支援情况
  4. 嘿嘿,我发现了百度网盘秒传的秘密 !!
  5. Python JPG转DCM,DCM转JPG,DCM转NRRD,NRRD转NII
  6. vegas可以做动画吗_Vegas 对静态图片做动画效果
  7. ACK 泛洪 DDoS 攻击
  8. 如果用户计算机已接入,计算机应用基础第七章复习题.doc
  9. 好用的个人树洞网盘外链系统源码
  10. mysql时出现client does not support auth...upgrading Mysql Client