C、C++的Makefile模板
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/
C、C++的Makefile模板的更多相关文章
- 我所使用的一个通用的Makefile模板
话不多说,请看: 我的项目有的目录结构有: dirls/ ├── include │ └── apue.h ├── lib │ ├── error.c │ ├── error.o │ ...
- Hello World 的makefile模板及其分析
makefile模板: ifeq ($(KERNELRELEASE),) //判断KERNELRELEASE是否为空,只有执行make的当前目录为内核源代码目录时,该变量才不为空. KERNELDIR ...
- 引用 模块编译Makefile模板
本文转载自geyingzhen<模块编译Makefile模板> 引用 geyingzhen 的 模块编译Makefile模板 ifneq ($(KERNELRELEASE), ) // ...
- linux: 几个常用makefile模板
不才,总结个人常用makefile模板,以备后用. 1.编译动态库 ############################################################# # Ma ...
- 【原创】支持同时生成多个main函数 makefile 模板
背景: 去年做项目的时候,由于有需要编译出多个可执行文件的需求,修改了Makefile使其支持生成多个结果(编译多个含有main函数的文件),但总觉得自己的实现不够完美. 今年又遇到这样需求的时候,可 ...
- 1、编写一个简单Makefile模板
一.Makefile简介 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译, ...
- g++编译的makefile模板库和脚本
编译C++文件,特别是多文件的时候,经常要找模板,这里为了后面方便,就自己做了一个模板. makefile模板:Makefile # Object files to either reference ...
- makefile编写---.c .cpp 混合编译makefile 模板
# c.cpp混合编译的makefile模板 # # BIN = client_system BASE_INSTALL_DIR := /opt/arm-2009q1 BUILD_TOOL_DIR := ...
- 万能makefile模板
这里一份万能makefile模板,写opencv项目时候使用的. 前提是提前配置好 包管理工具 pkg 然后就不用每次都去 -lopencv_xxx了. ####################### ...
随机推荐
- Python面向对象编程——继承与派生
Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...
- Python机器学习笔记:卷积神经网络最终笔记
这已经是我的第四篇博客学习卷积神经网络了.之前的文章分别是: 1,Keras深度学习之卷积神经网络(CNN),这是开始学习Keras,了解到CNN,其实不懂的还是有点多,当然第一次笔记主要是给自己心中 ...
- mybatis-geneator
一.简介 在使用mybatis时我们需要重复的去创建pojo类.mapper文件以及dao类并且需要配置它们之间的依赖关系,比较麻烦且做了大量的重复工作,mybatis官方也发现了这个问题, 因此给我 ...
- python pandas进行条件筛选时出现ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().”
在使用pandas进行条件筛选时,使用了如下的代码: fzd_index=data[(data['实际辐照度']<mi)or(data['实际辐照度']>ma)].index 原本以为,并 ...
- C++类拷贝控制 深拷贝 浅拷贝
普通类型对象之间的复制很简单,而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量,这篇文章将帮你理清C++类对象的拷贝方式 拷贝构造函数,拷贝赋值运算符 首先我们简单了解下默认的拷贝 ...
- windows导出文件名列表
新建txt文件,粘贴以下命令: DIR *.* /B >LIST.TXT 将txt文件的后缀改为.bat 执行bat文件即可
- 微信小程序中scoll-view的一个小坑
在微信小程序开发中,有时候swiper-view会出现显示不全的问题,我们可以用scoll-view来把它包裹下,但是要用scoll-view就一定要设置height,而我们经常是在页面中加的这个组件 ...
- Python学习-迭代器、生成器
一.迭代器 1. 可迭代对象 我们知道字符串.列表.元组.字典.集合都可以使用for语句进行循环遍历,然后输出每一个元素,这些都是可迭代对象. 检查对象是否是可迭代对象可以用两种方式去判断: (1)使 ...
- 使Flask的url支持正则表达式以及一个api小demo
from flask import Flask from flask import jsonify from flask import request from werkzeug.routing im ...
- 【求赐教】VMware workstation 转VSphere
首先我从其他电脑拷贝过来一台虚拟机(这个说法不知道准不准确,就是把所有文件夹都拷贝过来了),然后打开VMware,通过"打开虚拟机"这个操作,直接找到本地的.vmx文件,如下图所示 ...