#target PC or Board Default is haisi platform
CURDIR := $(shell pwd)
TG = Communication# CURDIR 和 TG是定义的变量
# 引用变量采用"$(变量名)"# Makefile中的变量只能是字符串类型# Makefile中变量有四种赋值方式:
# 1,简单赋值( := ) 编程语言中常规理解的赋值方式,只对当前语句的变量有效
# 2,递归赋值( = )  赋值语句可能影响多个变量,所有目标变量相关的其他变量都受影响
# 3,条件赋值( ?= ) 如果变量未定义,则使用符号中的值定义变量。如果该变量已经赋值,则该赋值语句无效。
# 4,追加赋值( += ) 原变量用空格隔开的方式追加一个新值#target
OUTOBJ = out/obj
BIN = mapa3_$(TG)MAKE = make
MKDIR = mkdir
RM = rm# O0 O1 表示在不影响编译速率的前提下尽可能的优化程序的大小和运行速率。
# O2    表示在牺牲部分编译速率的前提下 支持配置优化参数的优化 尽可能的提高运行速率。
# O3    表示 采取多项量算法 提高程序的运行速率(他不惜增大程序的大小)
# Os    和O3一样只不过他不会为了提高程序运行速率增大程序的大小。#-I 头文件的目录
INCLUDES += -I$(CURDIR)/  -O3
INCLUDES += -I/usr/local/libevent_haisi/include  -O3CC=arm-himix200-linux-gcc
CXX=arm-himix200-linux-g++
# CC=gcc
# CXX=g++#-L 库文件的目录
#CFLAGS 编译用
CFLAGS += $(INCLUDES)
CFLAGS += -L./
CFLAGS += -L/usr/local/libevent_haisi/lib#LDFLAGS 链接选项
LDFLAGS += -lm -lpthread -ldl -lstdc++
LDFLAGS += -Wl,-Bstatic -Wl,-Bdynamic -lpthread -lm -lstdc++ -ldl -lpthread
#链接库
LDFLAGS += -levent_core_aSUBDIRS = $(shell find $(CURDIR) -maxdepth 3 -type d)CSRCS =  $(foreach dir,$(SUBDIRS),$(wildcard $(dir)/*.c))
CXXSRCS = $(foreach dir,$(SUBDIRS),$(wildcard $(dir)/*.cpp))COBJS = $(patsubst %.c, %.o, $(CSRCS))
CXXOBJS = $(patsubst %.cpp, %.o, $(CXXSRCS))COBJS_TEST = $(addprefix $(OUTOBJ)/, $(notdir $(patsubst %.c,%.o, $(CSRCS))))
CXXOBJS_TEST = $(addprefix $(OUTOBJ)/, $(notdir $(patsubst %.cpp,%.o, $(CXXSRCS))))MAKEDEPEND = $(CC) -MM -MTCDEF = $(CSRCS:.c=.d)
CXXDEF = $(CXXSRCS:.cpp=.d)# 规则:用于说明如何生成一个或多个目标文件
# 规则的格式:
# targets:prerequisites
#     command
# 目标: 依赖
#     命令
# +++++命令需要以[TAB]键开始++++all:$(BIN) $(CDEF) : %.d : %.c $(MAKEDEPEND) $($<:.c=.o) $< $(INCLUDES) > $@$(CXXDEF) : %.d : %.cpp$(MAKEDEPEND) $($<:.cpp=.o) $< $(INCLUDES) > $@depend:$(RM) $(CDEF)$(RM) $(CXXDEF)$(MAKE) $(CDEF)$(MAKE) $(CXXDEF)$(COBJS) : %.o: %.c$(CC) -c $< -o $@ $(CFLAGS) $(CXXOBJS) : %.o: %.cpp$(CXX) -c $< -o $@ $(CFLAGS)$(BIN) : $(COBJS) $(CXXOBJS) #$(OUTOBJ) @echo "->>>>>>>> compile " $@@echo $(CSRCS)@echo $(CXXSRCS)@echo "->>>>>>>> compile " $@$(CXX) -O3 -Os -o $(BIN) $(COBJS)  $(CXXOBJS) $(CFLAGS) $(LDFLAGS)$(OUTOBJ):$(MKDIR) -p $(OUTOBJ)#.PHONY修饰的目标就是只有规则没有依赖
.PHONY:clean cleanall
clean:            $(RM) $(BIN) $(COBJS) $(CXXOBJS)
cleanall:$(RM) $(CDEF) $(CXXDEF)$(RM) $(BIN) $(COBJS) $(CXXOBJS)

运行

1、make clean,清理一下

2、make 执行命令

makefile输出定义的变量值

在编译规则中,加入输出语句即可,用$(变量)引用变量,再用@echo输出

Makefile编写运行相关推荐

  1. linux环境cpp/c文件的makefile编写(caffe举例)

    编译单个cpp文件 方法一.g++ 文件名.cpp,生成一个名为 "文件名.out" 的可执行文件 方法二.g++ -c 文件名.cpp -o 新文件名.o:生成一个被命名成 &q ...

  2. linux 生成和使用动态链接库和静态链接库的Makefile编写

    引用 Jesse Rei 的 linux 生成和使用动态链接库和静态链接库的Makefile编写 生成和使用动态链接库和静态链接库的Makefile编写 1. 概述 介绍linux下生成和使用动态链接 ...

  3. Visual Studio Code如何编写运行C、C++

    Visual Studio Code如何编写运行C.C++ 作者:知乎用户 链接:https://www.zhihu.com/question/30315894/answer/154979413 来源 ...

  4. Ubuntu下使用gcc和makefile编写c语言程序

    文章目录 前言 一.gcc编写c语言程序 1.hello world的输出 2.简单程序的编译与运行 3.windows环境下的编译运行结果对比 二.makefile编写c语言程序 总结 前言 本文通 ...

  5. linux下MaKefile编写

    Linux下编写 makefile 详细教程 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是goo ...

  6. 开发环境搭建---交叉工具链、makefile编写、连接器脚本、Eclipse调试

    交叉工具链 安装: 将arm-linux-gcc-4.3.2.tgz文件解压到linux根目录/下,可以发现解压后的文件在/usr/local/arm/4.3.2/文件下. 然后修改环境变量:执行命令 ...

  7. 一个简单的makefile编写VCS仿真

    一个简单的makefile编写VCS仿真 1 VCS简介 VCS是编译型Verilog模拟器,它完全支持OVI标准的Verilog HDL语言.PLI和SDF. VCS具有行业中较高的模拟性能,其出色 ...

  8. Linux下shell脚本/Makefile编写

    Linux下shell脚本/Makefile编写 一.基本概念 代码变成可执行文件,叫做编译(compile):先编译这个,还是先编译那个(即编译的安排),叫做构建(build). make只是一个指 ...

  9. 编写运行最简单的java程序——使用记事本编写java程序

    编写运行最简单的java程序--使用记事本编写java程序 第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还 ...

最新文章

  1. c语言中存储字符用什么函数,那些C语言中你不知道的字符串函数(坑)
  2. 重温经典之排序 java实现
  3. 视频营销、B2B营销、EDM营销之营销方式大PK
  4. 完整iOS APP发布App Store上架流程
  5. pycharm快速添加函数及参数注释_后端开发使用pycharm的技巧
  6. cpu多核 node 单线程_node单线程支撑高并发原理(node异步I/O)
  7. Exchange与ADFS单点登录 PART 6:Exchange声明规则配置
  8. 转载---设计模式分类
  9. 中交叉的线_表现力一绝!用交叉线构图拍出来的照片,竟然可以这么吸睛!
  10. [转贴]使用jQuery自动缩图片 - [jQuery]
  11. hadoop fs命令无法使用_Hadoop从入门到入土(三)HDFS集群简单维护及JAVA客户端连接HDFS...
  12. vrep中设置joint的位置、速度需要根据关节的模式来设置。
  13. 协作开发——使用git在多台机器上实现协作开发
  14. 谷歌免费GPU训练星际2AI好难?你需要份debug指南
  15. Paxos在大型系统中常见的应用场景
  16. 难道你不好奇?Thread.sleep(0):线程休眠0秒有什么意义!
  17. 【初等概率论】 01
  18. 筛选N以内的素数C语言版(1022)
  19. 个人免签监测APP源码 短信微信支付宝 实时捕获回调收款通知!
  20. Java 最佳学习途径

热门文章

  1. 按钮设计_成功的按钮设计原则
  2. Temporal框架学习
  3. Golang学习杂记
  4. sklearn.linear_model.Perceptron详解
  5. USACO Section 5.4 Betsy's Tour
  6. java毕业设计——基于JSP+sqlserver的网络在线考试系统设计与实现(毕业论文+程序源码)——在线考试系统
  7. java jta_分布式事务(二)Java事务API(JTA)规范
  8. Java基于j2ee+mysql的花鸟鱼虫花卉市场管理系统
  9. jenkins Redeploy Rancher2.x Workload插件实现CI/CD
  10. 玩游戏学前端——钢笔工具边玩边学