C、C++的Makefile模板
2024-09-01 10:27:18
Makefile模板
CC = gcc
LD = $(CC)
TARGET = $(notdir $(CURDIR))
SRC_DIR = .
INCLUDE_DIR += .
C_FLAGS = -g -Wall
LD_FLAFS =
LD_LIBS =
INCLUDES = -I$(INCLUDE_DIR)
ifeq ($(CC), g++)
TYPE = cpp
SRCS += $(wildcard $(SRC_DIR)/*.$(TYPE))
OBJS += $(patsubst %.$(TYPE), %.o, $(SRCS))
else
TYPE = c
SRCS += $(wildcard $(SRC_DIR)/*.$(TYPE))
OBJS += $(patsubst %.$(TYPE), %.o, $(SRCS))
endif
all : $(TARGET)
@echo "Builded target:" $^
@echo "Done"
$(TARGET) : $(OBJS)
@echo "Linking" $@ "from" $^ "..."
$(LD) -o $@ $^ $(LD_FLAGS) $(LD_LIBS)
@echo "Link finished\n"
$(OBJS) : %.o:%.$(TYPE)
@echo "Compiling" $@ "from" $< "..."
$(CC) -c -o $@ $< $(C_FLAGS) $(INCLUDES)
@echo "Compile finished\n"
.PHONY : clean cleanobj
clean : cleanobj
@echo "Remove all executable files"
rm -f $(TARGET)
cleanobj :
@echo "Remove binary files"
rm -f *.o
用法
编译C程序
make
编译C++程序
make CC=g++
或者将Makefile中的CC = gcc
改成CC = g++
,然后
make
其他
TARGET
指定生成的可执行文件名,我这里用的是当前所在目录名
SRC_DIR
指定源文件(.c .cpp)文件的路径
INCLUDE_DIR
指定头文件路径
C_FLAGS
指定编译参数选项
LD_FLAFS
指定链接参数选项
LD_LIBS
指定链接库
清除生成的文件:
# 清空全部生成文件
make clean
# 清空生成的中间文件
make cleanobj
Tips
对于Ubuntu系统,可以将Makefile文件复制到/Templates**(中文环境为**/模板)目录下,这样就可以在任意目录下右键添加该Makefile模板。
终端输入:
gedit ~/.bashrc
在~/.bashrc文件中添加一行
alias Makefile="cp ~/Templates/Makefile ./"
保存后输入:
source ~/.bashrc
生效之后,就可以通过在命令行输入Makefile
,来创建Makefile模板了。
此文原创禁止转载,转载文章请联系博主并注明来源和出处,谢谢!
作者: Raina_RLN https://www.cnblogs.com/raina/
最新文章
- linux socket连接中 ERRNO错误
- JQuery 动画及一些小知识点
- 面向服务的体系结构(SOA)——(4)对于服务的理解
- 第一段nodejs代码
- ajax简单封装
- C++学习笔记1:高级语言
- CodeForces 602E【概率DP】【树状数组优化】
- select,epoll的比较
- weak_ptr的一点认识
- UISearchBar 点击X 按钮收键盘
- Linux笔记(十一) - 文件系统管理
- 分析业务模型-类图(Class Diagram)
- es上的的Watcher示例
- linux tomcat 绑定域名
- BAT 大规模Hadoop集群实践
- matlab画图变粗脚本
- Port already be taken
- JS日期比较大小 给定时间和持续时间计算最终时间
- leetcode 链表 两数相加
- eclipse中项目出现红色的!
热门文章
- centos7安装mongodb以及使用
- 策略模式+注解 干掉业务代码中冗余的if else...
- UGUI_冻结技能键盘点击触发
- Winform中使用FastReport的DesignReport时怎样给通过代码Table添加数据
- Python中使用pip安装库时指定镜像源为豆瓣镜像源
- 分别设计点类Point和圆类Circle,点类有两个私有数据纵坐标和横坐标;圆类有也两个私有数据圆心和半径,其中圆心是一个点类对象;要求如下所述: (1) 通过构造方法初始化数据成员,数据成员的初始化通过构造方法的参数传递;(2) 分别编写点和圆的输出函数,其中圆的输出包括圆心和半径的输出;点的输出x,y;
- Linux 修改 ls 时间显示格式
- selenium使用总结
- mysql备份脚本并保留7天
- 基于Docker搭建大数据集群(六)Hive搭建