learning makefile vpath(1)】的更多相关文章

在讲vpath之前,我们首先了解以下makefile文件. 在类Unix系统中,当我们使用源码编译某个软件的时候,我们会使用confiure,make,make install这三个命令,其中cofigure生成makefile文件,make和make install编译和安装.makefile可以理解为一个脚本文件,使用make命令工具解析,其中定义了一系列的编译规则,如哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译. 那为什么会需要makefile了? 这主要因为编译这项工作随…
来自阅读陈皓的<跟我一起写makefile> VPATH变量 在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,并存放在不同的目录中.所以,当 make 需要去找寻文件的依赖关系时,你可以在文件前加上路径,但最好的方法是把一个路径告诉 make,让 make 在自动去找.Makefile 文件中的特殊变量“VPATH”就是完成这个功能的,如果没有指明这个变量,make 只会在当前的目录中去找寻依赖文件和目标文件.如果定义了这个变量,那么,make就会在当当前目录找不到的情…
Makefile和Make Rules 多模块软件.依赖树和Make 默认规则 Make使用程序对简单变量的支持 内建变量 虚目标 特殊目标 一般性语法错误及其纠正措施 命令行的使用和调试 Makefile中常用规则总结 make常用选项 -d  显示调试信息 -f  指定从哪个文件中读取依赖关系信息.默认文件是“Makefile”或“makefile” ,"-"表示从标准输入 -h 显示所有的Makefile的help信息 -n  打印所有Makefile执行命令,但不执行这些命令…
目录搜索 在一个大工程中,一般会将源文件和中间生成文件放在不同的目录,而且不会污染源码所在的目录.当需要编译不同目录下的源文件时,就需要指定路径,那么怎样让路径的表示以及源文件的引用更加灵活.就要用到目录搜索功能. VPATH VPATH:指定依赖文件的搜索目录,当规则的依赖文件在当前目录不存在时,make会在此变量所指定目录下去寻找这些依赖文件. #VPATH = src all: VPATH.o @echo compile done %.o: %.c gcc -c $< -o $@ 源码路径…
最近在linux上跑一些开源库做学习用, 顺手就搭了一下vscode的c++开发环境, 这里分享一下vscode进行C++开发的基本环境结构. 1. 首先是编辑器, vscode直接官网下载的, 后期可以用 apt 直接更新, 个人觉得还是挺方便的, 有喜欢折腾的小伙伴可以去github上拉开源版本的下来自己编译, 这里不过多赘述 2. 其次是编译器, 我使用的是GNU编译器g++, 生成脚本我选择了makefile 以上是基础工具, 如果把vscode换成vim + shell脚本, 调试直接…
彻底掌握Makefile(二) 前言 在前面的文章彻底掌握Makefile(一)当中,我们简要的介绍了一些常见的makefile使用方法,在本篇文章当中我们将继续介绍一些makefile当中的常见用法. Makefile中的条件判断 ifeq 和 ifneq 我们在写makefile的时候常常会有通过if语句进行判断的需求,比如说根据不同的文件设置不同的编译器等等. cc=g++ main: demo.c echo $(cc) ifeq ($(cc), gcc) echo $(cc) = 相等的…
Makfile总结 在前面的三篇文章彻底掌握Makefile(一).彻底掌握Makefile(二)和彻底掌握Makeifle(三)当中我们仔细介绍了Makefile各种使用方法,在本篇文章当中主要是对前面三篇关于makefile的文章做一个总结,方便大家快速查阅和检查. Makefile基础以及小技巧 Make命令的工作流程 当我们在命令行当中输入make的时候他的执行流程如下: make命令首先会在当前目录下面寻找makefile或者Makefile文件. 寻找到makefile文件之后,他会…
转载:http://c.biancheng.net/view/7051.html 我们都知道一个工程文件中的源文件有很多,并且存放的位置可能不相同(工程中的文件会被放到不同的目录下),所以按照之前的方式去编写 Makefile 会有问题.我们之前列举的例子,所有的源文件基本上都是存放在与 Makefile 相同的目录下.只要依赖的文件存在,并且依赖规则没有问题,执行 make命令整个工程就会按照对我们编写规则去编译,最终会重建目标文件.那如果需要的文件是存在于不同的路径下,在编译的时候要去怎么办…
Copy:http://graybull.is-programmer.com/posts/37758.html 本文给出万能Makefile的具体实现,以及对其中的关键点进行解析.所谓C++万能Makefile,即可编译链接所有的C++程序,而只需作很少的修改. 号称万能Makefile,一统江湖.我对原版的Makefile做了些修改.首先揭开它的庐山真面目: #################################################### # Generic makef…
https://www.cmcrossroads.com/article/basics-vpath-and-vpath Only missing prerequisites matching the pattern are searched using the associated path. So vpath makes it possible, for example, to specify just a path to search for header (.h) files: vpath…
1. gnu make的函数调用是$,比如 $(subst ee,EE,feet on the street) 规则中“TARGETS”可以是空格分开的多个文件名 a all: echo $(subst ee,EE,feet on the street) Phony-Targets SUBDIRS = foo bar baz .PHONY: subdirs $(SUBDIRS) subdirs: $(SUBDIRS) $(SUBDIRS): $(MAKE) -C $@ foo: baz Patt…
跟我一起写 Makefile 陈皓 第一章.概述 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional(专业)的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要 了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具 备完成大型工…
From: http://blog.csdn.net/liang13664759/article/details/1771246 最近在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出来,方便学习. 后记,看完发现这篇文章和<Linux环境下的C编程指南>的makefile一章所讲述的惊人的相似,只是这篇文章从一个实例切入,在有些地方比较好理解.能让…