当前位置:   article > 正文

Linux-Makefile 编译指定目录下所有源文件 (集成开发环境IDE 原理)_makefile递归编译所有目录下的文件

makefile递归编译所有目录下的文件

更新说明

不定期更新:

  1. 编译后的目标文件.o统一存放在目录.ojb下
  2. 添加lib库路径配置

git仓库
makefile

1. 描述

与常规而言,此makefile只需指定需要编译的工程目录/文件即可。 指定项目头文件和源文件路径,脚本自动编译和链接源文件。(类似IAR、QT等集成开发环境,只需指定工程文件目录)

2. 源文件

makefile:

#			-readme-			#
# 功能:自动捕获指定路径下的工程文件,再进行编译&链接
# 变量:
#	include:头文件路径
#	source: 源文件路径
TARGET	:= proc_test
CC	:= gcc
CFLAGS  = -g -Wall $(INCS_P)	#1 设置编译选项:		# 在编译.c文件时	#-I:指定头文件路径 L:链接lib库 -Wl,R:动态链接lib库
LDFLAGS	= -lpthread -lm     	#2 指定链接器要链接那些库文件	# 在链接.o文件时

# 			指定项目头文件和源文件路径		 #
include := ./
source  := ./
#			指定不编译的文件				#
src_out := #./realtime/source/rtdb_gdw376.c ./commons/test/*.c ./config/test/*.c ./mqtt/test/*.c ./realtime/test/*.c ./modbus/test/*.c

## 添加链接器-I文件路径
incs := $(shell find ${include} -name "*.h")    # 1、获取当前目录下,所有.h文件
incs := $(dir ${incs} hacks)                    # 2、过滤:只取文件路径,丢弃
incs := $(sort $(incs))                         # 3、过滤相同的单词, 并排序
INCS_P := $(foreach n,$(incs),-I$(n))           # 4、循环追加-I

## 汇编目录下.c源文件
srcs := $(shell find ${source} -name "*.c")     # 预汇编:捕获目录下所有源文件
src_out := $(shell ls ${src_out})           # 展开需要过滤的源文件
srcs := $(filter-out $(src_out),$(srcs))    # 过滤源文件
OBJS := $(patsubst %.c,%.o,$(srcs))             # 汇编:替换(编译)所有%.c -> %.o

$(TARGET): $(OBJS)
	gcc $^ -o $@ $(LDFLAGS)



# 调试
.PHONY:debug debug_as debug_ld
debug:
	@echo "变量:INCS_P"
	@echo ${INCS_P}
	@echo ${}
	@echo ${srcs}
debug_as:
	@echo "汇编器as:"
	@echo $(CC) { $(CFLAGS) } -c -o xx.o xx.c
debug_ld:
	@echo "链接器ld:"
	@echo $(CC) xx.o -o $(TARGET) { $(LDFLAGS) }
	

.PHONY:clean clean_obj
clean:
	rm -f $(TARGET) $(OBJS)
clean_obj:
	rm -f $(OBJS)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

3. 介绍

只需配置几个参数
请添加图片描述

4. 用法&示例

请添加图片描述

5. demo

  1. 可通过传参,后续使用界面配置编译工程。 制作集成开发环境IDE
  2. 将makefile制作为vscode插件,能在线编译Linux&arm小型测试程序?
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/699261
推荐阅读
相关标签
  

闽ICP备14008679号