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/

最新文章

  1. linux socket连接中 ERRNO错误
  2. JQuery 动画及一些小知识点
  3. 面向服务的体系结构(SOA)——(4)对于服务的理解
  4. 第一段nodejs代码
  5. ajax简单封装
  6. C++学习笔记1:高级语言
  7. CodeForces 602E【概率DP】【树状数组优化】
  8. select,epoll的比较
  9. weak_ptr的一点认识
  10. UISearchBar 点击X 按钮收键盘
  11. Linux笔记(十一) - 文件系统管理
  12. 分析业务模型-类图(Class Diagram)
  13. es上的的Watcher示例
  14. linux tomcat 绑定域名
  15. BAT 大规模Hadoop集群实践
  16. matlab画图变粗脚本
  17. Port already be taken
  18. JS日期比较大小 给定时间和持续时间计算最终时间
  19. leetcode 链表 两数相加
  20. eclipse中项目出现红色的!

热门文章

  1. centos7安装mongodb以及使用
  2. 策略模式+注解 干掉业务代码中冗余的if else...
  3. UGUI_冻结技能键盘点击触发
  4. Winform中使用FastReport的DesignReport时怎样给通过代码Table添加数据
  5. Python中使用pip安装库时指定镜像源为豆瓣镜像源
  6. 分别设计点类Point和圆类Circle,点类有两个私有数据纵坐标和横坐标;圆类有也两个私有数据圆心和半径,其中圆心是一个点类对象;要求如下所述: (1) 通过构造方法初始化数据成员,数据成员的初始化通过构造方法的参数传递;(2) 分别编写点和圆的输出函数,其中圆的输出包括圆心和半径的输出;点的输出x,y;
  7. Linux 修改 ls 时间显示格式
  8. selenium使用总结
  9. mysql备份脚本并保留7天
  10. 基于Docker搭建大数据集群(六)Hive搭建