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模板的更多相关文章

  1. 我所使用的一个通用的Makefile模板

    话不多说,请看: 我的项目有的目录结构有: dirls/ ├── include │   └── apue.h ├── lib │   ├── error.c │   ├── error.o │   ...

  2. Hello World 的makefile模板及其分析

    makefile模板: ifeq ($(KERNELRELEASE),) //判断KERNELRELEASE是否为空,只有执行make的当前目录为内核源代码目录时,该变量才不为空. KERNELDIR ...

  3. 引用 模块编译Makefile模板

    本文转载自geyingzhen<模块编译Makefile模板>   引用 geyingzhen 的 模块编译Makefile模板 ifneq ($(KERNELRELEASE), ) // ...

  4. linux: 几个常用makefile模板

    不才,总结个人常用makefile模板,以备后用. 1.编译动态库 ############################################################# # Ma ...

  5. 【原创】支持同时生成多个main函数 makefile 模板

    背景: 去年做项目的时候,由于有需要编译出多个可执行文件的需求,修改了Makefile使其支持生成多个结果(编译多个含有main函数的文件),但总觉得自己的实现不够完美. 今年又遇到这样需求的时候,可 ...

  6. 1、编写一个简单Makefile模板

    一.Makefile简介 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译, ...

  7. g++编译的makefile模板库和脚本

    编译C++文件,特别是多文件的时候,经常要找模板,这里为了后面方便,就自己做了一个模板. makefile模板:Makefile # Object files to either reference ...

  8. makefile编写---.c .cpp 混合编译makefile 模板

    # c.cpp混合编译的makefile模板 # # BIN = client_system BASE_INSTALL_DIR := /opt/arm-2009q1 BUILD_TOOL_DIR := ...

  9. 万能makefile模板

    这里一份万能makefile模板,写opencv项目时候使用的. 前提是提前配置好 包管理工具 pkg 然后就不用每次都去 -lopencv_xxx了. ####################### ...

随机推荐

  1. Python面向对象编程——继承与派生

    Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...

  2. Python机器学习笔记:卷积神经网络最终笔记

    这已经是我的第四篇博客学习卷积神经网络了.之前的文章分别是: 1,Keras深度学习之卷积神经网络(CNN),这是开始学习Keras,了解到CNN,其实不懂的还是有点多,当然第一次笔记主要是给自己心中 ...

  3. mybatis-geneator

    一.简介 在使用mybatis时我们需要重复的去创建pojo类.mapper文件以及dao类并且需要配置它们之间的依赖关系,比较麻烦且做了大量的重复工作,mybatis官方也发现了这个问题, 因此给我 ...

  4. 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 原本以为,并 ...

  5. C++类拷贝控制 深拷贝 浅拷贝

    普通类型对象之间的复制很简单,而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量,这篇文章将帮你理清C++类对象的拷贝方式 拷贝构造函数,拷贝赋值运算符 首先我们简单了解下默认的拷贝 ...

  6. windows导出文件名列表

    新建txt文件,粘贴以下命令: DIR *.*  /B >LIST.TXT 将txt文件的后缀改为.bat 执行bat文件即可

  7. 微信小程序中scoll-view的一个小坑

    在微信小程序开发中,有时候swiper-view会出现显示不全的问题,我们可以用scoll-view来把它包裹下,但是要用scoll-view就一定要设置height,而我们经常是在页面中加的这个组件 ...

  8. Python学习-迭代器、生成器

    一.迭代器 1. 可迭代对象 我们知道字符串.列表.元组.字典.集合都可以使用for语句进行循环遍历,然后输出每一个元素,这些都是可迭代对象. 检查对象是否是可迭代对象可以用两种方式去判断: (1)使 ...

  9. 使Flask的url支持正则表达式以及一个api小demo

    from flask import Flask from flask import jsonify from flask import request from werkzeug.routing im ...

  10. 【求赐教】VMware workstation 转VSphere

    首先我从其他电脑拷贝过来一台虚拟机(这个说法不知道准不准确,就是把所有文件夹都拷贝过来了),然后打开VMware,通过"打开虚拟机"这个操作,直接找到本地的.vmx文件,如下图所示 ...