`
scm002
  • 浏览: 317048 次
社区版块
存档分类
最新评论

makefile中如何判断一个文件是否存在

 
阅读更多

makefile判断文件存在如下的两种方法:

1. 调用shell的函数进行判断

exist = $(shell if [ -f $(FILE) ]; then echo "exist"; else echo "notexist"; fi;)
ifeq (exist, "exist")
#do something here
endif
当然,这个方法很土,但是能够工作!!
 
2. 使用makefile的函数进行判断
ifeq ($(FILE), $(wildcard $(FILE)))
#do something here
endif

 

$(wildcard $(FILE))的意思是当前路径下的文件名匹配FILE的文件展开。
假设当前路径下存在a.c 和 b.c,那么执行src=$(wildcard *.c)
src的值就为a.c b.c;
如果不使用通配符,比如src=$(wildcard c.c);那么就是要展开当前路径下,文件名为c.c的文件,因为当前路径下文件不存在,因此src为空字符串。

 

 

在编写MAKEFILE的时候,如何判断一个文件是否存在

 

You need to escape the $.

 

EXISTED := $(shell test -e foo.c && echo $$?)

 

You can also use the wildcard function directly in make.

 

EXISTED := $(wildcard foo.c)

 

If foo.c doesn't exist, then $(wildcard ...) returns an empty string.

 

 

分享到:
评论

相关推荐

    Makefile文件的制作

    在Makefile中,每个规则都有一个命令块,这些命令在目标需要更新时执行。例如,一个简单的C语言项目Makefile可能包括以下规则: ```make CC = gcc CFLAGS = -Wall all: main.o func.o $(CC) $(CFLAGS) -o myapp ...

    Makefile不编译已经编译过的文件

    总结起来,`Makefile`不编译已经编译过的文件是通过检查文件的修改时间来决定是否需要重新编译的,这是`make`工具的一个强大功能,能够显著提升大型项目构建的效率。理解并熟练运用`Makefile`的规则和特性,对于任何...

    Makefile文件格式详解.pdf

    条件语句可以用来判断文件是否存在或变量是否为空。循环语句可以用来遍历文件列表或变量列表。函数调用可以用来执行某个函数或命令。 在Makefile中,依赖关系是关键的概念。依赖关系可以是文件之间的依赖关系,也...

    Makefile 中文教程.pdf

    Makefile 作为一个自动化编译工具,在软件开发过程中扮演着非常重要的角色。Makefile 的主要作用是根据源代码文件生成目标文件,实现自动化编译和链接的过程。 Makefile 的基本概念 Makefile 由一系列的规则组成,...

    makefile学习用测试文件.rar

    在Linux环境中,`Makefile`是一个非常重要的工具,它用于自动化构建项目,管理编译过程。这个`makefile学习用测试文件.rar`很显然是为了帮助初学者理解和掌握`Makefile`的基本概念和用法。在本文中,我们将深入探讨`...

    linux makefile 工程目录下,所有c文件

    在这个特定的场景中,我们的任务是编写一个Makefile来处理工程目录下所有C语言源文件的编译,包括可能存在的子目录中的文件。下面我们将详细探讨如何实现这一目标。 首先,我们需要理解Makefile的基本结构和规则。...

    Linux内核2.6 Makefile文件

    总的来说,Linux内核2.6的Makefile文件是整个内核构建过程的指挥中心,它的每一个细节都直接影响着内核的构建结果。深入学习和掌握这个文件,能够帮助开发者更深入地理解和控制Linux内核的编译过程,从而实现系统的...

    makefile变量使用及其条件判断

    Makefile 还有特殊类型的变量,称为自动化变量,如`$(第一个依赖目标)、`$@`(目标本身)等,它们在规则的命令中提供了方便的访问方式。 总的来说,理解 Makefile 中的变量使用和条件判断是编写高效Makefile的...

    makefile多目录文件

    以下是一个简单的`Makefile`示例,展示了如何处理多目录的编译: ```makefile CC = gcc CFLAGS = -Wall -g HDRS = $(wildcard include/*.h) SRCS = $(wildcard src/main/*.c) $(wildcard src/utils/*.c) OBJS = $...

    Makefile文件中的等号左右两边能不能有空格

    在探讨Makefile文件中等号两侧是否可以有空格这一问题之前,我们首先需要了解Makefile的基本概念及其在软件构建过程中的作用。 ### Makefile基本概念 Makefile是一种用于自动化构建程序或软件项目的脚本文件,它...

    Makefile中文手册.zip

    此外,Makefile中的伪目标(Phony Target)如`.PHONY`,用于标记那些实际上并不存在的文件,防止因同名真实文件的存在而导致的误解。`clean`就是一个常见的伪目标,用于清理编译过程中产生的临时文件。 书中可能会...

    makefile中文手册

    Make是Unix和类Unix系统中的一个自动化构建工具,它通过读取名为Makefile的文件来编译、链接项目,大大提高了开发效率。下面我们将深入探讨Make命令和Makefile的相关知识点。 1. **Makefile的基本结构**:Makefile...

    Makefile中文手册.pdf

    一个Makefile文件通常包含了目标(target)、依赖(dependencies)和命令(commands)三个基本要素。目标通常是需要生成的文件,依赖是生成目标所需的前提条件,命令则是用于创建或更新目标文件的shell命令。...

    Makefile_中文教程

    以下是一个简单的 Makefile 示例,展示了如何为一个包含 8 个 C 文件和 3 个头文件的工程编写 Makefile: ```makefile # 定义目标 all: program # 定义规则 program: main.o func1.o func2.o func3.o func4.o func...

    中文Makefile 教程

    Makefile是一个文本文件,包含了编译规则和命令,使得开发者能够通过一条简单的`make`命令,自动完成源代码的编译、链接等任务。在Windows下,IDE通常会自动处理这些工作,但在Unix或Linux系统中,编写Makefile是...

    makeFile中文手册

    - **条件语句与循环控制**:虽然Makefile本质上是一个脚本文件,但它支持if/else条件判断和foreach循环控制等结构,从而允许编写更加复杂的逻辑。 #### 五、C/C++源代码的编译过程 - **编译与链接**:源代码文件...

    makefile中文手册(200页pdf文档)

    - **Makefile** 是一个包含指令的文本文件,告诉 make 工具如何构建目标文件。 - **make** 工具会读取 Makefile 文件,并根据其中的规则执行相应的命令来构建目标。 #### 2. Makefile 规则 - **显示规则**:明确...

    makefile教程(中文版).rar

    在Linux系统中,`Makefile`是一个至关重要的工具,它帮助开发者自动化编译、链接以及执行程序的过程。这篇中文版的`Makefile`教程详细介绍了如何编写和使用`Makefile`,以提高软件构建的效率。`Makefile`是基于规则...

    Makefile详解 && Makefile中文文档.zip

    Makefile是一个文本文件,其中包含了规则(rules)来定义如何从源代码生成可执行文件或库。这些规则通常包括目标(targets)、依赖项(dependencies)和命令(commands)。目标通常是需要生成的文件,依赖项是目标...

Global site tag (gtag.js) - Google Analytics