当前位置: 首页 > news >正文

163网站视频动做正规代运营公司排名

163网站视频动做,正规代运营公司排名,滨州建设局网站,wordpress主题 know how为什么写这个呢,其实我有系统学过Makefile和CMake。但是因为用的不是很多或者说没有深入的使用场景,导致我不是很熟练,或者说没法优雅地使用。刚好最近对Linux的嵌入式编程比较感兴趣,借着demo来分析一下资深工程师写的Makefile&a…

为什么写这个呢,其实我有系统学过Makefile和CMake。但是因为用的不是很多或者说没有深入的使用场景,导致我不是很熟练,或者说没法优雅地使用。刚好最近对Linux的嵌入式编程比较感兴趣,借着demo来分析一下资深工程师写的Makefile,学习一下。由易到难吧,先来第一个,是一个GPIO的Makefile。

Makefile文件

BIN = test_gpio  
CC = $(CROSS)gcc  
CPP = $(CROSS)g++  
LD = $(CROSS)ld  
#
INCS = 
LIBS =  
SUBDIRS =  
#
DEFINC = -I ./ \# LIBVAR =-shared -fPIE -L.
#
INCS += $(DEFINC)  
LIBS +=$(LIBVAR)
#  
CSRCS = $(wildcard *.c)  
CPPSRCS = $(wildcard *.cpp)  
#  
COBJS := $(CSRCS:.c=.o)  
CPPOBJS := $(CPPSRCS:.cpp=.o)  
#  
CFLAGS += $(INCS)  
CFLAGS += -O2 -Wall -g -fPIE
CPPFLAGS += $(INCS)  
CPPFLAGS += -O2 -Wall -g -fPIE
LDFLAGS += -lm -lrt -lstdc++ -ldlall:$(BIN)  
$(COBJS) : %.o: %.c  $(CC) $(CFLAGS) -c $< -o $@   
$(CPPOBJS) : %.o: %.cpp  $(CPP) $(CPPFLAGS) -c $< -o $@ $(BIN) : $(COBJS) $(CPPOBJS)  $(CC) -o $(BIN)    $(COBJS) $(CPPOBJS) $(LDFLAGS) $(LIBS)    rm -rf $(COBJS)  rm -rf $(CPPOBJS)  .PHONY:clean cleanall  clean:              rm  -rf $(BIN) $(COBJS) $(CPPOBJS)  
#rm *.d  
cleanall:  rm $(BIN) $(COBJS) $(CPPOBJS)  

拆解分析

BIN = gpio_red_blink
CC = $(CROSS)gcc
CPP = $(CROSS)g++
LD = $(CROSS)ld
  • 定义了变量BIN,表示生成可执行文件名为gpio_red_blink
  • 定义变量CC,表示使用的C编译器为$(CROSS)gcc(其中$(CROSS)是一个可能存在的前缀
  • 定义变量CPP,表示使用的C++编译器为$(CROSS)g++
  • 定义变量LD,表示使用的链接器为$(CROSS)ld
INCS =
LIBS =
SUBDIRS =
  • 定义空变量INCELIBSSUBDIRS
DEFINC = -I ./ \
  • 定义变量DEFINC,指定编译过程中需要包含的头文件路径。这里设置为当前路径
INCS += $(DEFINC)
LIBS +=$(LIBVAR)
  • DEFINC添加到INCS
  • 将未定义变量LIBVAR添加到LIBS
CSRCS = $(wildcard *.c)
CPPSRCS = $(wildcard *.cpp)
  • 使用通配符,将当前目录所有.c文件加入到CSRCS变量中
  • 使用通配符,将当前目录所有.cpp文件加入到CSRCS变量中
COBJS := $(CSRCS:.c=.o)
CPPOBJS := $(CPPSRCS:.cpp=.o)
  • CSRCS中所有.c文件扩展名替换为.o,并且赋值给COBJS
  • CPPSRCS中所有,cpp文件扩展名替换为.o,并且赋值给CPPOBJS
CFLAGS += $(INCS)
CFLAGS += -O2 -Wall -g -fPIE
CPPFLAGS += $(INCS)
CPPFLAGS += -O2 -Wall -g -fPIE
LDFLAGS += -lm -lrt -lstdc++ -ldl -lpthread
  • INCS分别添加到CFLAGSCPPFLAGS,指定了编译包含头文件路径
  • -O2 -Wall -g -fPIE添加到CFLAGSCPPFLAGS,表示编译选项
  • -lm -lrt -lstdc++ -ldl -lpthread,添加到LDFLAGS中,表示链接选项
all:$(BIN)
  • 定义了一个目标叫做all
  • 依赖于可执行文件$(BIN)
$(COBJS) : %.o: %.c$(CC) $(CFLAGS) -c $< -o $@
  • 定义了一个规则模式,将.c文件编译为.o文件
  • %表示通配符,任意字符
  • $<表示第一个依赖的文件,即.c文件
  • $@表示目标文件,即.o文件
$(CPPOBJS) : %.o: %.cpp$(CPP) $(CPPFLAGS) -c $< -o $@
  • 定义了一个规则模式,将.cpp文件编译为.o文件
$(BIN) : $(COBJS) $(CPPOBJS)$(CC) -o $(BIN)    $(COBJS) $(CPPOBJS) $(LDFLAGS) $(LIBS)rm -rf $(COBJS)rm -rf $(CPPOBJS)
  • 定义一个规则模式,用于链接目标文件生成可执行文件$(BIN)
  • $(BIN)依赖$(COBJS) $(CPPOBJS)
  • 链接完成后删除中间文件
.PHONY:clean cleanall
clean:rm  -rf $(BIN) $(COBJS) $(CPPOBJS)
cleanall:rm $(BIN) $(COBJS) $(CPPOBJS)
  • 定义两个伪目标(.PHONY),用于执行清理操作
http://www.ds6.com.cn/news/23564.html

相关文章:

  • 赤峰政府门户网站建设相关制度seo小白入门教学
  • 申请域名后怎么做网站宁波网络推广联系方式
  • 秦皇岛 网站制作2345网址导航电脑版官网
  • wordpress文章合并seo关键词排名软件流量词
  • 洛阳青峰网络公司网站建设百度图片搜索网页版
  • 杭州手机网站建设网址域名ip解析
  • 网站的扁平化设计理念济南网站优化公司排名
  • 用老域名做新网站 权重怎么传递网络营销好学吗
  • 建立网站分为几阶段百度seo快速排名优化软件
  • 长沙专业个人做网站哪家好免费查权重工具
  • b站怎么看视频在线人数网络推广的优势有哪些
  • 潍坊市建设工程质量安全监督站网站口碑营销案例ppt
  • 易居做网站搜索引擎营销的案例
  • 宁夏网站备案软文范例大全100字
  • 龙岩网络巨头seo案例分析
  • 企业b2b平台排名seo怎么样
  • 新手如何建立网站大兴今日头条新闻
  • 唐山哪里有建设网站app开发自学教程
  • 淘宝网站开发源码青岛做网络推广的公司有哪些
  • 在网站上使用特殊字体搜索百度一下
  • 做最好的在线中文绅士本子阅读网站百度官网认证免费
  • 宣城公司做网站影视站seo教程
  • 网站绝对路径营销文案
  • php做网站难么沪深300指数基金
  • 芬兰网站后缀seo教程百度网盘
  • 上海建设钢结构工程网站网上在哪里打广告最有效
  • 深圳福永网站建设公司广告公司网站
  • 花瓣官网设计网站自助建站系统软件
  • 中国优秀设计网站有哪些内容百度优化是什么意思
  • 进服务器编辑网站怎么做微博推广平台