Linux开发工具学习笔记4

本文介绍了工程项目的文件结构组织方式,并详细解析了如何利用Makefile进行自动化构建,包括脚本功能目录下的变量赋值、总控Makefile的嵌套功能及各功能块Makefile的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个完整的工程文件结构可以通过

#tree 这个命令查看

比如

|-- Makefile

|-- add

|  |-- Makefile

|  `-- src 

|      |-- add.c

|      `-- add.o

|-- cal

|-- div

|  |-- Makefile

|  `-- src

|      |-- div.c

|      `-- div.o

|-- mul

|  |-- Makefile

|  `-- src

|      |-- mul.c

|      `-- mul.o

|-- scripts

|   `--Makefile

|-- sub

|  |-- Makefile

|  `-- src

|      |-- sub.c

|      `-- sub.o

`-- test

   |-- Makefile

   `-- src

       |-- main.c

       `-- main.o



1.scripts /Makefile

在脚本功能目录下的Makefile主要进行一些变量赋值,在编写时编者需要了解基本的赋值语句,在这里以#开头均为

注解


CC := gcc -lpthread -lsqlite3
Target := chat_client
Source := $(wildcard src/*.c)
Objs := $(patsubst %.c,%.o,$(Source))
Modules += main check_action create_msg interface interface1 set_disp_mode thread_read thread_write
Allobjs := $(addsuffix /src/*.o,$(Modules))

2.总控Makefile (在总控Makefile中主要执行进入各个子目录中读取Makefile并进行make编译的嵌套功能)

可以理解为:

              1.进入各个子目录进行make命令

              2.把每个功能目录下的.o文件链接组成可执行文件

include scripts/Makefile


modules_make = $(MAKE) -C $(1);
modules_clean = $(MAKE) clean -C $(1);


.PHONY: all mm mc clean




all : $(Target)


mm:
@ $(foreach n,$(Modules),$(call modules_make,$(n)))
mc:
@ $(foreach n,$(Modules),$(call modules_clean,$(n)))


$(Target) : mm
@$(CC) -o  $(Target) $(Allobjs)  -lsqlite3 -lpthread


clean : mc
@rm -rf $(Target)


3.功能块Makefile (在各个独立的子功能块编写Makefile文件


可以把程序分成各个功能块,每个功能目录下都有一个src 目录存放功能 的.c文件,另外还有makefile文件,这个makefile文件能将.c转化为.o文件



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值