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

【工具使用】快速实现Makefile模板的方法

一,简介

我们在使用gcc编译程序时,常常需要自己实现Makefile,那么如何快速的实现Makefile呢?这里把一些基本的操作整理成模板,供参考。

二,模板介绍

功能包含基本功能编译exe(包括调用其他算法库)的功能。

话不多说,直接上模板:

# <1> base command
CC := gcc
AR := ar
RM := rm -rf
MKDIR := mkdir -p# <2> inclue path and .c files path
PROJECT_PATH := .
IGNORE_INC_DIR := ./.git ./Makefile_template
INCLUDE_PATH := $(shell find $(PROJECT_PATH) -type d $(foreach dir, $(IGNORE_INC_DIR), -not -path '*$(dir)*'))IGNORE_SRC_FILE_DIR := 
SRC_FILE_PATH := $(shell find $(PROJECT_PATH) -type d $(foreach dir, $(IGNORE_SRC_FILE_DIR), -not -path '*$(dir)*'))ALGO_LIB_DIR := # <3> build flags
C_INC_FLAGS := $(addprefix -I, $(INCLUDE_PATH))
COMMON_FLAGS := -O2 -g0 -W
CFLAGS := $(C_INC_FLAGS) $(COMMON_FLAGS)LIB_FLAG := # <4> src files and objs
SRC_FILES := $(foreach dir,$(SRC_FILE_PATH),$(wildcard $(dir)/*.c))
#SRC_FILES := $(shell find $(SRC_FILE_PATH) -name *.c)
SRC_OBJS := $(patsubst %.c, %.o, $(SRC_FILES))# <5> target define
OUTPUT_DIR := out
TARGET := out/output.exe# <6> build command
Executable: $(OUTPUT_DIR) $(TARGET)$(OUTPUT_DIR):$(MKDIR) $@$(TARGET):$(CC) $(SRC_FILES) $(CFLAGS) $(LIB_FLAG) -o $@$(SRC_OBJS):%.o:%.c$(CC) $(CFLAGS) -o $@ $<clean:$(RM) $(SRC_OBJS) $(TARGET)# <7> debug info
print:$(info $(INCLUDE_PATH))$(info $(SRC_FILE_PATH))$(info $(SRC_FILES)).PHONY: all clean

三,总结

本文主要介绍了一般Makefile的模板,供参考。

http://www.lryc.cn/news/344741.html

相关文章:

  • Linux-信号执行
  • 在线听歌播放器 梨花带雨网页音乐播放器 网页音乐在线听 源码
  • 免费生成证件照
  • 深入探索数据链路层:网络通信的基石
  • STM32使用L9110驱动电机自制小风扇
  • C语言——队列的实现
  • 15-LINUX--线程的创建与同步
  • 【退役之重学Java】如何解决消息持续积压等问题
  • Linux下的SPI通信
  • 【转载】数字化工厂规划蓝图报告
  • 《基于GNU-Radio和USRP的雷达通信系统的实现》文献阅读
  • Sealos急速部署生产用k8s集群
  • VTK数据的读写--Vtk学习记录1--《VTK图形图像开发进阶》
  • Vue3专栏项目 -- 一、第一个页面(下)
  • 一栈走天下:使用HBuilderX高效搭建Uni-App微信小程序开发环境
  • docker安装Debian:11 freeswitch1.10.5
  • c3 笔记6 认识css样式表
  • 基于springboot+mybatis+vue的项目实战之增删改查CRUD
  • 字节跳动(社招)四面算法原题
  • 车道线检测交通信号识别车辆实时检测
  • 用正则表达式打造免费代理IP池
  • 【每日刷题】Day35
  • Python数据清洗与可视化实践:国际旅游收入数据分析
  • 前置知识储备
  • 六月品牌互动营销方案的作用是什么
  • dummy_worker C++ 预占用部分比例cpu资源,人为创造cpu资源紧张
  • 电脑缺失opencl.dll怎么办,轻松解决opencl.dll的多种方法分享
  • el-select 点击按钮滚动到选择框顶部
  • vue 钩子函数updated什么时候触发
  • 消息队列使用常见问题