当前正在推进一个项目,该项目文档数量庞大,因此必须对文件进行归类管理。这种做法能显著提升代码维护的便捷性。为此,需要对代码进行系统化梳理,构建优质文件结构至关重要。鉴于接触该领域时间尚短,若后续内容存在不妥之处,敬请各位批评指正。
编写
我要建立项目时,会设立好几个目录,具体有:资料库,代码库,执行区,构建区,素材库这五个目录,资料库用来存放程序所需的接口文件,代码库是程序的核心代码存放地,执行区是编译后生成的可运行文件所在位置,构建区是各类生成文件汇集的场所,素材库则存放辅助性文件。
那个东西一直放在那里,到现在还没有人去动过,它静静地待在角落里,显得有些落寞,周围的光线也似乎被它忽略了,时间仿佛在这里停滞了,它就像一个被遗忘的见证者,默默地注视着一切,却又无人问津,这种沉默让它更加神秘,也更加孤独,仿佛在诉说着一段不为人知的故事,却又无人倾听,它静静地存在,成为了一个永恒的谜团。
= $(shell pwd)/../
= $(shell pwd)/../Src
= $(shell pwd)/../Bin
= $(shell pwd)/../Lib
= $(shell pwd)/../Build
######################################
# file
系统自动搜寻所有以.c或.cpp为后缀的文件,将编译产物命名为对应文件名的.o格式目标文件
SRC 包括当前目录下所有以 c 结尾的文件,以及当前目录下所有以 cpp 结尾的文件
目标文件列表包含以c结尾的文件转换成的目标文件,还包含以cpp结尾的文件转换成的目标文件,以及指定源文件目录下的所有目标文件
你可以测试任何你想要的东西
#目标文件名,输入任意你想要的执行文件名
:= SDK
# and lib
#编译参数
CC:= g++
LIBS变量通过执行pkg-命令获取库文件信息,然后添加特定路径,最后以空格分隔各项内容
:=
:=
:= $(shell pkg- -- ) -I${}/
:= -std=gnu++11 $() $()
:= $()
#you not do here
.PHONY : objs clean
: $()
all : $()
objs : $(OBJS)
:
clean :
rm -fr $()/*.so
rm -fr $()/*.o
: clean
rm -fr $()
$() : $(OBJS)
将文件处理结果输出到目标文件,同时包含多个目标文件和库文件,每个元素之间用逗号分隔
该文件整体包含一个目录说明,首先需要明确存放文件的目录结构,这样后续操作会更加便捷。
第二步要找到原始文件,需要把源代码文档转为c文件格式。通过扩展通配符号功能,本流程目的是提取全部c文件,采用替换操作,将提取出的c文件全部转为o文件。
第三部分涉及编译工具的联合设定:包括载入库类档案,载入头类档案,载入编译装置,以及载入各类联合模块
第四部分是实施部分,实施部分包含目标与条件,要制作目标文档,必须先制作条件文档,
... : ...
...
...
那些基本用法,依据指令达成目标,那些是基础用法,若需深入了解,可参考相关文献
库文件编译
下面为编译库文件时所需要的文件
######################################
= $(shell pwd)/../../
= $(shell pwd)/../../Lib
= $(PWD)/../../Obj
######################################
# you can test to what you want
#共享库文件名,lib*.so
:= $()/.so
# and lib
#编译参数
CC:= g++
库文件列表 := 通过执行pkg-命令获取的参数结果
:=
:=
:= $(shell pkg- -- ) -I$()/
编译时加上调试信息,启用所有警告选项,采用最高优化级别,指定使用GNU C++11标准,然后依次执行两个命令,再执行另外两个命令
:= $()
# file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
:= $( *.c) $( *.cpp)
目标文件列表包括所有目录下的文件,以及特定后缀的cpp和o文件
.PHONY : objs clean
all : $()
clean :
rm -fr *.o
: clean
rm -fr $()
# 生成.o文件
$()/%.o : %.cpp
$(CC) $() -fpic -c $< -o $@ $(LIBS)
#生成动态库文件
$() : $(OBJS)
$(CC) - -o $@ $(OBJS)
编译动态库时,必须加入-以及-fpic这两个参数,其插入顺序很关键,稍有不慎就会导致编译失败,务必在文件起始部分放置,并在最外层代码段中增加一条指令
列表赋值为空括号;遍历列表中的每个元素;执行相关操作;
cd $$ && make; \
done
上句查找子文件里的,然后将子文件夹里的进行编译。
本说明指出该作品系独立创作完成,作者署名为 ,若需转引,请务必保留此说明及所附文章网址:

感谢您的支持
感谢您的支持
扫一扫在手机端查看
-
Tags : 修改makefile文件的变量linux
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1