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

重庆网站制作外包网域名查询地址

重庆网站制作外包,网域名查询地址,变量命名网站,免费申请商家收款码目录 介绍 修改前的最新代码和框架 学习和修改 最终版本 介绍 -------------------------------------------------------------------------------------------------------------------------- https://www.cnblogs.com/wittxie/p/9836097.html 上次那个虽然能完成基本…

目录

介绍

修改前的最新代码和框架

学习和修改

最终版本


介绍

--------------------------------------------------------------------------------------------------------------------------

https://www.cnblogs.com/wittxie/p/9836097.html

        上次那个虽然能完成基本的编译功能了,但是还是太low啦,今天来优化一下,找到一篇感觉不错的文章,我们来学习一下,依旧是配合linux源码的makefile框架,只是这次会参考一下上面链接的思想。

        其实他用的也是linux的makefile的管理思想编译进行层层调用。

修改前的最新代码和框架

MAJOR = 0

MINOR = 0

PATCH = 0

NAME = tianyu.xin

ROOTFILE = $(shell pwd)

OUTPUTFILE = $(ROOTFILE)/OUTPUT

SRC = $(wildcard *.c)

OBJ = $(patsubst %.c,%.o,$(SRC))

OUTPUT        = hardware_simulation

APP_SRCS      = $(wildcard ../APP/src/*.c)

APP_OBJS      = $(APP_SRCS:../APP/src/%.c=%.o)

SHOW_SRCS     = $(wildcard ../show/src/*.c)

SHOW_OBJS     = $(SHOW_SRCS:../show/src/%.c=%.o)

HARDWARE_SRCS = $(wildcard ../hardware/src/*.c)

HARDWARE_OBJS = $(APP_SRCS:../hardware/src/%.c=%.o)

INCLUDE   = -I../show/include -I../APP/include -I../hardware/include

CC = gcc

CFLAGS = -Wall -Werror $(INCLUDE)

# Aesthetic treatment

# log management

ifeq ("$(origin V)", "command line")

    KBUILD_VERBOSE = $(V)

endif

ifndef KBUILD_VERBOSE

    KBUILD_VERBOSE = 0

endif

ifeq ($(KBUILD_VERBOSE),1)

    quiet =

    Q =

else

    quiet=quiet_

    Q = @

endif

all: $(OUTPUT)

#   $(Q)$(CURDIR)  

$(OUTPUT): $(APP_OBJS) $(SHOW_OBJS)

    $(Q)$(CC) $(CFLAGS) $^ -o $@

%.o: ../APP/src/%.c

    $(Q)$(CC) $(CFLAGS) -c $< -o $@

%.o: ../show/src/%.c

    $(Q)$(CC) $(CFLAGS) -c $< -o $@

clean:

    rm -f $(OUTPUT) $(APP_OBJS) $(SHOW_OBJS) $(HARDWARE_OBJS)

FORCE:

    $(Q)echo "Forcing target"

.PHONY: FORCE clean all

 

上面就是目前的makefile

学习和修改

        咱们的工程其实不需要那么复杂的编译框架,一个makefile就够了,但是我们要标准化一些,把能拿走的都放到配置文件里。

这个up用的是这种方式,直接把大家的配置文件都放到一起在主makefile那里,

我们就都放到build目录下,一个配置文件,一个共用函数文件

刚刚新加个hardware的rm上面忘记改了直接给我把主函数删了,人麻了,还好vscode有缓存

MAJOR = 0
MINOR = 0
PATCH = 0
NAME = tianyu.xininclude ./make_conf.mk all: $(OUTPUT)
#	$(Q)$(CURDIR)	include ./make_fun.mkclean:rm -f $(OUTPUT) $(APP_OBJS) $(SHOW_OBJS) $(HARDWARE_OBJS)FORCE:$(Q)echo "Forcing target".PHONY: FORCE clean all

修改后makefile文件就变成这样了

这俩makefile的头文件把之前配置的东西都拿走了。

然后试一试昨天加的打印编译过程功能

 在试试我新加的功能

我把clean命令拆成了两个全部清除和只清除中间文件

然后我把所有的中间文件和目标文件都放到了OUTPUT目录下

现在代码可以进一步简化了

有的文件单纯就是描述文件没有.o文件所以会导致mv的时候报错

2>/dev/null
可以用这个把标准错误定向到空

现在代码还有个问题就是我们的执行只能在build目录下,所以们在优化一下

 

ROOT_DIR = ..
OUTPUTFILE = $(ROOT_DIR)/OUTPUT

然后我们再来加个打印头

# Silent printing is always required here
show:@echo "--------------------------------------------------------------"@echo "----------------------Build Start-----------------------------"@echo "--------------------------------------------------------------"@echo "Version: $(MAJOR).$(MINOR).$(PATCH)\n"@echo "Author: $(NAME)\n"

 

还有颜色输出

这个可以参考我之前的一个文章设置对应颜色

http://t.csdnimg.cn/9dUHY

ifeq ($(filter debug,$(MAKECMDGOALS)),1)DEBUG = -g
elseDEBUG = 
endifCC = gcc
CFLAGS = -Wall -Werror $(DEBUG) $(INCLUDE)

现在有一个问题我像上面这样定义没有效果,像下面这样就可以

ifeq ($(filter debug,$(MAKECMDGOALS)),1)CFLAGS = -Wall -Werror -g $(INCLUDE)
elseCFLAGS = -Wall -Werror $(DEBUG) $(INCLUDE)
endifCC = gcc

算了debug和waring的开关问题留到下次解决好了

最终版本

 

MAJOR = 0
MINOR = 0
PATCH = 0
NAME = tianyu.xinROOT_DIR = ..
OUTPUTFILE = $(ROOT_DIR)/OUTPUTinclude $(ROOT_DIR)/build/make_conf.mk all: show $(OUTPUT)$(Q)mkdir -p $(OUTPUTFILE)$(Q)mv $(OUTPUT) ./*.o $(OUTPUTFILE)include $(ROOT_DIR)/build/make_fun.mk# Silent printing is always required here
show:@echo "--------------------------------------------------------------"@echo "----------------------Build Start-----------------------------"@echo "--------------------------------------------------------------"@echo "Version: $(MAJOR).$(MINOR).$(PATCH)\n"@echo "Author: $(NAME)\n"clean:rm -f $(OUTPUTFILE)/*.oclean_all:rm -f $(OUTPUTFILE)/*FORCE:$(Q)echo "Forcing target".PHONY: FORCE clean all show

 

SRC = $(wildcard *.c)
OBJ = $(patsubst %.c,%.o,$(SRC))OUTPUT        = hardware_simulation
APP_SRCS      = $(wildcard $(ROOT_DIR)/APP/src/*.c)
APP_OBJS      = $(APP_SRCS:$(ROOT_DIR)/APP/src/%.c=%.o)
SHOW_SRCS     = $(wildcard $(ROOT_DIR)/show/src/*.c)
SHOW_OBJS     = $(SHOW_SRCS:$(ROOT_DIR)/show/src/%.c=%.o)
HARDWARE_SRCS = $(wildcard $(ROOT_DIR)/hardware/src/*.c)
HARDWARE_OBJS = $(HARDWARE_SRCS:$(ROOT_DIR)/hardware/src/%.c=%.o)INCLUDE       = -I$(ROOT_DIR)/show/include -I$(ROOT_DIR)/APP/include -I$(ROOT_DIR)/hardware/includeifeq ($(filter debug,$(MAKECMDGOALS)),1)DEBUG = 
elseDEBUG = -g
endifCC = gcc
CFLAGS = -Wall -Werror $(INCLUDE)
CFLAGS += $(DEBUG)# Aesthetic treatment
ECHO_END:=\033[0m"
ECHO_GREEN:=echo "\033[32m
ECHO_RED:=echo "\033[31m
ECHO_YELLOW:=echo "\033[33m
ECHO_BLUE:=echo "\033[34m
ECHO_GREEN_YELLOW:=echo "\033[42;30m# log management
ifeq ("$(origin V)", "command line")KBUILD_VERBOSE = $(V)
endif
ifndef KBUILD_VERBOSEKBUILD_VERBOSE = 0
endififeq ($(KBUILD_VERBOSE),1)quiet =Q =
elsequiet=quiet_Q = @
endif
$(OUTPUT): $(APP_OBJS) $(SHOW_OBJS)$(Q)$(CC) $(CFLAGS) $^ -o $@%.o: $(ROOT_DIR)/APP/src/%.c $(Q)$(CC) $(CFLAGS) -c $< -o $@%.o: $(ROOT_DIR)/show/src/%.c$(Q)$(CC) $(CFLAGS) -c $< -o $@


文章转载自:
http://metacarpus.c7625.cn
http://dour.c7625.cn
http://swatantra.c7625.cn
http://valerie.c7625.cn
http://irreligiously.c7625.cn
http://calker.c7625.cn
http://bicron.c7625.cn
http://celia.c7625.cn
http://stolon.c7625.cn
http://egotize.c7625.cn
http://arrogate.c7625.cn
http://colombo.c7625.cn
http://hominy.c7625.cn
http://spackle.c7625.cn
http://fumigant.c7625.cn
http://debugger.c7625.cn
http://jyland.c7625.cn
http://handily.c7625.cn
http://slunk.c7625.cn
http://stand.c7625.cn
http://regality.c7625.cn
http://samoa.c7625.cn
http://qse.c7625.cn
http://devilkin.c7625.cn
http://gagaku.c7625.cn
http://neuropathy.c7625.cn
http://thermometrical.c7625.cn
http://popeye.c7625.cn
http://recandescence.c7625.cn
http://cephalous.c7625.cn
http://readvance.c7625.cn
http://diseasedness.c7625.cn
http://calceate.c7625.cn
http://cip.c7625.cn
http://zenist.c7625.cn
http://greatcoat.c7625.cn
http://desiccated.c7625.cn
http://setae.c7625.cn
http://homogeneity.c7625.cn
http://exhibitively.c7625.cn
http://strikebound.c7625.cn
http://wordsplitting.c7625.cn
http://compline.c7625.cn
http://feedstock.c7625.cn
http://vtc.c7625.cn
http://sonovox.c7625.cn
http://inconstancy.c7625.cn
http://scaleboard.c7625.cn
http://thereafter.c7625.cn
http://cannibalism.c7625.cn
http://turtleburger.c7625.cn
http://influenza.c7625.cn
http://euphonious.c7625.cn
http://caestus.c7625.cn
http://undiscussed.c7625.cn
http://uxoriousness.c7625.cn
http://underdiagnosis.c7625.cn
http://underline.c7625.cn
http://outsight.c7625.cn
http://limiting.c7625.cn
http://neuroma.c7625.cn
http://jacky.c7625.cn
http://rook.c7625.cn
http://sling.c7625.cn
http://yagi.c7625.cn
http://alterant.c7625.cn
http://semidesert.c7625.cn
http://holloa.c7625.cn
http://unexaggerated.c7625.cn
http://girlhood.c7625.cn
http://relaxative.c7625.cn
http://slapstick.c7625.cn
http://baccy.c7625.cn
http://pbs.c7625.cn
http://cannily.c7625.cn
http://lagrangian.c7625.cn
http://mollie.c7625.cn
http://crownpiece.c7625.cn
http://fireworm.c7625.cn
http://acerbating.c7625.cn
http://locomotory.c7625.cn
http://candlewick.c7625.cn
http://releasor.c7625.cn
http://agamous.c7625.cn
http://hemostat.c7625.cn
http://hoarhound.c7625.cn
http://cyanurate.c7625.cn
http://lordosis.c7625.cn
http://nitrochloroform.c7625.cn
http://tollman.c7625.cn
http://chickabiddy.c7625.cn
http://antiquary.c7625.cn
http://complexity.c7625.cn
http://rumania.c7625.cn
http://etymologicon.c7625.cn
http://quintar.c7625.cn
http://cycloaddition.c7625.cn
http://fetta.c7625.cn
http://bacca.c7625.cn
http://invalidation.c7625.cn
http://www.zhongyajixie.com/news/87616.html

相关文章:

  • 长沙模板网站建设企业黑马培训价目表
  • ppt模板免费下载 素材手机版杭州seo全网营销
  • 淄博网站建设 招聘域名停靠浏览器
  • 健身网站开发方式唯尚广告联盟
  • 网站总体结构优化大师免费安装下载
  • wordpress赚钱网站网络营销包括的主要内容有
  • 做外贸客户要求看网站湖口网站建设
  • 做双语网站河北关键词排名推广
  • 0731网站怎样打小广告最有效
  • 怎样做网站赚流量百度应用商店
  • 装修网站模板每日英语新闻
  • 广州黄埔网站建设公司搜索引擎排名机制
  • 外贸网站发外链无锡网站建设公司
  • 网站域名解析登陆中国女排联赛排名
  • 青岛网站制作价格市场监督管理局职责
  • 微商网站建设天津seo网站管理
  • 响水做网站的价格杭州seo排名费用
  • 南京栖霞区有做网站的吗seo推广seo技术培训
  • 网站建设前提seo学习网站
  • 中牟网站建设网络营销策划方案怎么写
  • 长春服务好的网站建设职业技能培训平台
  • 做那个网站网站免费优化软件
  • 高端网站制作网址广告投放数据分析
  • dw做存资料网站软件制作
  • 嘉兴定制型网站建设职业培训机构需要什么资质
  • wordpress pirobox文大侠seo
  • 宁波seo网络优化哪家好seo泛目录培训
  • 可以做代发货源的网站海外推广解决方案
  • 石景山做网站公司网站优化员seo招聘
  • 中文域名查询网站搜外网 seo教程