Makefile文件基本格式
以下是Makefile的基本模板
#指定编译器
CC = g++
#指定编译参数
CFLAGS = -std=c++11
#指定头文件路径,此处用于指定非标准库的头文件路径
INC = -I./ -I /usr/include
#指定要链接的动态库或静态库 -L是指定动态库路径,非标准的动态库需要此参数
LIBS = -lm -ldl -L/mylibs/xxx -lxxx
#把上面放一起
CXXFLAGS = ${CFLAGS} ${INC} ${LIBS}
#指定生成可执行文件名称
EXEC = a.out
#指定由哪些文件来生成可执行文件
OBJS = xxx1.o xxx2.o
#make执行动作
${EXEC} : ${OBJS}
${CC} -o $@ $^
#make clean动作
clean:
rm -rf ${OBJS}
#中间文件的生成
%.o:%.c
$(CC) $(CXXFLAGS) $(INC) -o $@ -c $<
不生成中间.o文件
#指定编译器
CC = g++
#指定编译参数
CFLAGS = -std=c++11
#指定头文件路径,此处用于指定非标准库的头文件路径
INC = -I./ -I /usr/include
#指定要链接的动态库或静态库 -L是指定动态库路径,非标准的动态库需要此参数
LIBS = -lm -ldl -L/mylibs/xxx -lxxx
#把上面放一起
CXXFLAGS = ${CFLAGS} ${INC} ${LIBS}
#指定生成可执行文件名称
EXEC = a.out
#指定由哪些文件来生成可执行文件
COBJS = xxx1.c xxx2.c
#make执行动作
all:
$(CC) -o $(EXEC) $(COBJS) $(CXXFLAGS)
#make clean动作
clean:
rm -rf ${OBJS}
关于生成 **.o 文件(只编译未链接文件);若是在大型项目中,只修改了其中一个文件的内容,那么没必要全部文件重新编译,只需编译修改部分即可。此时就推荐使用先编译生成 *.o文件 ; 再链接。
Makefile文件基本格式的更多相关文章
- Makefile文件学习总结
Makefile文件相当于是一种脚本编程语言,目的是实现自动化编译.编写makefile文件的过程中可以使用变量.控制结构和函数等一般编程语言的特性. Makefile文件的组成内容.makefile ...
- linux中Makefile文件相关内容
第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...
- C++学习笔记25:makefile文件2
Makefile文件语法 行解析:命令按行解析 命令行的行首字符为Tab键,其他行的行首字符不得为Tab键,但可以使用多个空格缩进 换行:命令太长时,行尾使用"\"换行 注释:行首 ...
- C++学习笔记24:makefile文件
makefile make命令:负责c/c++程序编译与链接 make根据指定命令进行建构 建构规则文件:GNUmakefile , makefile,Makefile makefile 文件格式 m ...
- Linux内核Makefile文件(翻译自内核手册)
--译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt) kbuild(kernel build) 内核编译器 Thi ...
- zz android 系统 makefile文件(Android.mk)组织结构
Android.mk脚本结构 下面是main.mk文件包含关系,本文档主要说明的就是这些文件里到底做了什么.(这个文件被根目录下的makefile文件包含) 一. main.mk 1.检查版本 ...
- 例解 autoconf 和 automake 生成 Makefile 文件
本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法.主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Con ...
- 怎样写Makefile文件(C语言部分)
本文摘抄自"跟我一起写Makefile ",只是原文中我自己感觉比较精要的一部分,并且只针对C语言,使用GCC编译器. 原文请看这里:http://wiki.ubuntu.org. ...
- makefile文件操作大全
Makefile的规则 -- 转自 :http://blog.csdn.net/ruglcc/article/details/7814546/ 在讲述这个Makefile之前,还是让我们先来粗略地看 ...
随机推荐
- Redis(六)管道(Pipelining)
管道技术并不是Redis特有的,管道技术在计算机科学中有很多地方的应用. 来自wiki的解释: In computing, a pipeline, also known as a data pipel ...
- python 练习题:使用迭代查找一个list中最小和最大值,并返回一个tuple
# -*- coding: utf-8 -*- # 请使用迭代查找一个list中最小和最大值,并返回一个tuple from collections import Iterable def findM ...
- Filco圣手二代双模蓝牙机械键盘的连接方法
常规方法 确认键盘的电源接通. 同时按下「Ctrl」+「Alt」+「Fn」执行装置切换模式.配对LED灯(蓝)和低电量显示LED灯(红)约同时亮10秒左右. 想移除已登录的装置时,请从「蓝牙装置登录/ ...
- 金蝶BOS元模型分析
对一些需求变化多样的产品而言,做好可变性设计是非常重要的.国外做得好的有Siebel,国内有金蝶的BOS,实际上金蝶的BOS很多理念跟Siebel是相似的,呵呵...他们都是采用MDD的方式来解决可变 ...
- Android调用系统相机和相册并解决data为空,OOM,图片角度不对的问题
最近公司项目用到手机拍照的问题,好不容易在网上copy了一些代码,但是运行起来一大堆bug,先是三星手机上运行程序直接崩掉,debug了一下原来是onActivityResult中data返回为空,找 ...
- MEDICI仿真NMOS器件晶体管语法笔记
MEDICI仿真NMOS器件晶体管 TITLE TMA MEDICI Example 1 - 1.5 Micron N-Channel MOSFET 给本例子取的标题,对实际的模拟无用 COM ...
- 源码升级SUSE openssh
1.check old opensslrpm -q opensslopenssl versionwhich opensslwhereis opensslls /etc/ssl 2.backup old ...
- ORACLE监听理解
参考官方文档Net Services Reference的7 Oracle Net Listener Parameters (listener.ora) 1 监听概念 oracle监听,是个服务器端进 ...
- Vue2.0 新手入门 — 从环境搭建到发布
什么是 Vue Vue 是一个前端框架,特点是数据绑定 比如你改变一个输入框 Input 标签的值,会自动同步更新到页面上其他绑定该输入框的组件的值 组件化 页面上小到一个按钮都可以是一个单独的文件. ...
- Spring Boot Admin 2.1.0
原文:https://blog.csdn.net/forezp/article/details/86105850 Spring Boot Admin简介 Spring Boot Admin是一个开源社 ...