首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何检查一个目录在Makefile中是否“不存在”?如果[!-d ... ]返回始终为true

在Makefile中,可以使用条件判断语句来检查一个目录是否“不存在”。具体的语法是通过使用shell命令来执行目录检查,并根据检查结果进行条件判断。

以下是一个示例的Makefile代码,用于检查一个目录是否“不存在”:

代码语言:txt
复制
check_directory:
    if [ ! -d $(DIRECTORY_PATH) ]; then \
        echo "The directory does not exist."; \
    else \
        echo "The directory exists."; \
    fi

在上述代码中,$(DIRECTORY_PATH)是一个变量,表示要检查的目录路径。根据实际情况,你可以将其替换为你想要检查的目录路径。

该代码中使用了条件判断语句if [ ! -d $(DIRECTORY_PATH) ]; then ... else ... fi。其中,[ ! -d $(DIRECTORY_PATH) ]是一个shell命令,用于检查目录是否不存在。如果目录不存在,则执行echo "The directory does not exist."输出提示信息;如果目录存在,则执行echo "The directory exists."输出提示信息。

要运行上述Makefile代码,可以在命令行中执行以下命令:

代码语言:txt
复制
make check_directory DIRECTORY_PATH=/path/to/directory

其中,/path/to/directory是你要检查的目录路径,根据实际情况进行替换。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法提供相关链接。但你可以根据自己的需求,在腾讯云官方网站上查找相关产品和文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

6_Makefile与GCC

6.1.2.4 链接: ​ 解析目标代码的外部引用,将多个目标代码文件连接一个可执行文件。 ​...如果我们能够编写一个管理编译这些文件的工具,使用这个工具来描述这些源文件的编译,如何重新编译。为此“make”工具就此诞生。...不过上面的Makefile仍然有问题,就是工程的源文件不断增加,如果按照上面的写法,你会发现,Makefile会越来越臃肿。下面我们讲解如何解决这个臃肿的问题。...6.4.3.3 目标生成规则: ​ 目标生成: ​ 1)检查规则的依赖文件是否存在。 ​ 2)若依赖文件不存在,则寻找是否有规则用来生成该依赖文件。...注意,Makefile中所有的函数必须要有返回值。创建一个文件夹src,在里下面创建两个文件,100.c,ask.c。

3.6K10
  • Makefile教程

    (1)make会在当前目录下找名字叫“Makefile”或“makefile”的文件; (2)如果找到,它会找文件的第一个目标文件(target),并把这个文件作为最终的目标文件; (3)如果...Makefile是根据依赖项是否被修改决定是否重新执行command。如果不把头文件写入依赖项,则面临的风险就是修改了头文件,目标文件不会被重新编译。...其实是可以不用.PHONY来指明命令名称,因为命令并不会被产生,也就是不存在,所以make target时命令始终会被执行。...其实可以使用Makefile的shell函数来执行shell脚本,因为shell函数把执行shell脚本后的输出作为函数返回,因此我们可以使用shell函数来Makefile的变量赋值。...: $(CC) $(INCLUDE) $(CFLAGS) -c $< 一眼望去,为什么Makefile目标文件没有依赖项。

    4K53

    深度刨析makefile

    7. makefile 的命令编写 (1)逻辑控制 关键字 功能 ifeq 判断参数是否相等,相等 true,不相等 false。...ifneq 判断参数是否相等,不相等 true,相等 false。 ifdef 判断是否有值,有值 true,没有值 false。...ifndef 判断是否有值,没有值 true,有值 false。 这四个关键字都要搭配 else 和 endif 来使用,并且以 endif 介绍。...四、make 命令是如何运行的 1. make 的错误处理 (1)make 的返回值 每当 makefile 的一条命令运行完毕,make 都会去检查命令的返回码,如果命令返回代表成功的返回码,那么...比如我们执行 mkdir 建立一个目录,如果目录不存在,那么执行成功返回0,如果目录存在,那么就出错并停止执行。

    11310

    Makefile基本用法

    名为GUNmakefile和Makefile的文件同时存在,则使用前者。 调用方法过程,若前者不存在,则如下脚本给出了如何寻找后者是否存在所需要调用的方法,然后执行。...当foo.c不存在当前的路径,则按照VPATH顺序依次搜索,如下是不存在的情况,但是在src,因此进行了等价。 ? ?...当一个先决条件的名称的格式'-lname'时,make通过搜索文件来专门处理它libname.so文件 如果找不到,则在当前目录的libname.a文件 在通过匹配vpath搜索路径和vpath搜索路径指定的目录...set -e,这句语句告诉bash如果任何语句的执行结果不是true则应该退出 -M显示完整的头文件依赖关系(https://www.cnblogs.com/black-mamba/p/7419580....条件判断 当编译器gcc,则执行第一种方法,否则执行第二种。 ? ifdef判断,判断是否存在该值,而并不判断其拓展结果是否空。因此有以下 ? 其它内容参照手册即可。

    2.5K40

    统一代码风格工具——EditorConfig

    匹配EditorConfig配置文件的配置项会按照读取顺序被应用, 所以最近的配置文件的配置项拥有优先权 如果.editorconfig文件没有进行某些配置,则使用编辑器默认的设置 配置.editorconfig...root = true # Unix-style newlines with a newline ending every file 对于所有的文件 始终在文件末尾插入一个新行 [*] end_of_line...name] 匹配不存在name的任意一个单一字符 {s1,s2,s3} 匹配给定的字符串的任意一个(用逗号分隔) {num1..num2}  匹配num1到num2...解析时它们都是小写的 indent_style 设置缩进风格(tab是硬缩进,space软缩进) indent_size 用一个整数定义的列数来设置缩进的宽度,如果indent_style...文件末尾新行 始终在文件末尾插入一个新行 [*] end_of_line = lf insert_final_newline = true 对于所有的文件 每一行的尾部自动调整 Lf 文件的末尾是一个空行

    6.7K32

    makefile 基础、进阶及常用 makefile

    命令:通过执行该命令由依赖文件生成目标 makefile 工作原理 1、若想生成目标,检查规则的依赖条件是否存在,如不存在,则寻找是否有规则用来生成该依赖文件 2、检查规则的目标是否需要更新,必须先检查它的所有依赖...联合编译 makefile 上面的例子只是一个最简单的 makefile 的使用方法,但实际项目里面不可能只有一个文件,实际可能是多个 .c .h 组成,像这样的项目,我们该如何通过 makefile...$@:在命令中使用,表示规则的目标 $<:在命令中使用,表示规则的第一个条件 $^:在命令中使用,表示规则的所有条件,组成一个列表,以空格隔开,如果这个列表中有重复的项则消除重复项。...mekfile 函数 如果你认为上面的 makefile 已经很完美了,那你就大错特错了,做一个假设,如果你在项目中新增了一个 .c 的文件后,你还是需要修改 makefile 增加一个所依赖的 .o...makefile 的 all 因为 makefile 的执行流程是找到第一个目标作为最终生成的目标,如果顺序错乱了,makefile 就可能报错,all 方法就是解决这个问题而存在的,并且,all 方法可以让一个

    40210

    linux下boost编译安装全过程脚本塈bzip2编译安装全过程脚本

    return 0 else echo invalid argument: echo $* exit -1 fi } # 清除指定文件夹的内容,如果文件夹不存在则创建空文件夹...checksum与$2指定的md5相等则返回 1,否则返回0 # $1 待检查的文件路径 # $2 md5校验码 need_download(){ if [ $# -eq 2 ] then...checksum与$2指定的md5相等则返回 1,否则返回0 # $1 待检查的文件路径 # $2 md5校验码 need_download(){ if [ $# -eq 2 ] then...=$BZIP2_FOLDER/Makefile # 使用sed编译器修改Makefile,在编译选项增加-fPIC参数 # 判断CFLAGS是否已经有-fPIC选项,如果没有就添加,没有则不修改 if...CFLAGS定义增加-fPIC选项 上面两个脚本中有不少相同的函数,方便维护,在实际工程,我是把它合并放在一个库文件的,本文为了让每个脚本都能独立运行,才特别将公用函数分别复制到每个脚本

    2K70

    Linux 下的make命令与Makefile

    :非执行模式,输出所有执行命令,但并不执行; -t:更新目标文件; -q:make操作将根据目标文件是否已经更新返回”0″或非”0″的状态信息; -p:输出所有宏定义和目标文件描述; -d:Debug...检查规则 有时候,我们不想让我们的makefile的规则执行起来,我们只想检查一下我们的命令,或是执行的序列。...仅仅是检查所指定的目标是否需要更新。如果是0则说明要更新,如果是2则说明有错误发生。 -r, –no-builtin-rules 禁止make使用任何隐含规则。...如果目标模式没有包含斜框字符,而把D加在第一个依赖文件的开头。 (c) 测试是否所有的依赖文件都存在或是理当存在。...(同第5步) (c) 测试所有的依赖文件是否存在或是理当存在。 (d) 对于不存在的依赖文件,递归调用这个算法查找他是否可以被隐含规则找到。

    10.2K20

    Linux makefile 教程 非常详细,且易懂

    4、如果edit所依赖的.o文件也不存在,那么make会在当前文件找目标.o文件的依赖性,如果找到则再根据那一个规则生成.o文件。...GNU组织建议把编译器一个源文件的自动生成的依赖关系放到一个文件一个“name.c”的文件都生成一个“name.d”的Makefile文件,[.d]文件中就存放对应[.c]文件的依赖关系。...四、检查规则 有时候,我们不想让我们的makefile的规则执行起来,我们只想检查一下我们的命令,或是执行的序列。...仅仅是检查所指定的目标是否需要更新。如果是0则说明要更新,如果是2则说明有错误发生。 “-r” “–no-builtin-rules” 禁止make使用任何隐含规则。...如果目标模式没有包含斜框字符,而把D加在第一个依赖文件的开头。 3)测试是否所有的依赖文件都存在或是理当存在。

    4.3K20

    玩转Mysql系列 - 第25篇:sqlwhere条件在数据库中提取与应用浅析

    录在索引按照[b,c,d]排序,但是在堆表上是乱序的,不按照任何字段排序。 SQL的where条件提取 在有了以上的t1表之后,接下来就可以在此表上进行SQL查询了,获取自己想要的数据。...提取规则:从索引的第一个键值开始,检查其在where条件是否存在,若存在并且条件是=、>=,则将对应的条件加入Index First Key之中,继续读取索引的下一个键值,使用同样的提取规则;若存在并且条件是...提取规则:从索引的第一个键值开始,检查其在where条件是否存在,若存在并且条件是=、<=,则将对应条件加入到Index Last Key,继续提取索引的下一个键值,使用同样的提取规则;若存在并且条件是...Index Filter的提取规则:同样从索引列的第一列开始,检查其在where条件是否存在:若存在并且where条件仅为 =,则跳过第一列继续检查索引下一列,下一索引列采取与索引第一列同样的提取规则...结语 在读完、理解了以上内容之后,详细大家对于数据库如何提取where的查询条件,如何将where的查询条件提取Index Key,Index Filter,Table Filter有了深刻的认识

    1.7K20

    芯片设计Makefile简明教程

    tb.sv和dut.v是依赖,执行命令前会先检查tb.sv和dut.v是否存在,以及是否有修改。.../simv -xxx 这个例子,sim并不是要生成的结果文件,而只是我们给操作起的一个名字。由于伪目标总是不存在,所以命令也一定会重新执行,即使simv没有修改。...默认目标 如果我们只是敲make(后面不跟目标),那么将调用Makefile里的第一个目标。那么我们为了防止出错通常把第一个目标定义成all(执行完整的流程)或者help(显示帮助菜单)。.../simv -xxx 这样,当我们不记得如何使用Makefile的时候,直接敲make就会有使用帮助菜单。另外,我们还可以看到,一个目标后面可以执行多条命令,比如这里的三条echo命令。...makefile增加选项 但我们还需要进一步学习两个重要功能:选项和目录递归。 我们常需要在仿真时提供一些选项,比如testcase名,是否是post仿真,是否要dump波形。那么怎么实现呢?

    1.9K50

    HBase Region自动切分细节

    实际上HMaster会启动一个线程定期遍历检查所有处于splitting状态的父region,确定检查父region是否可以被清理。...检测线程首先会在meta表揪出所有split列为true的region,并加载出其分裂后生成的两个子region(meta表splitA列和splitB列),只需要检查此两个子region是否还存在引用文件...,如果不存在引用文件就可以认为该父region对应的文件可以被删除。...简单解释一下,这个错误是说reference文件所引用的父region文件不存在了,如果查看日志的话有可能看到如下异常: ? 父region文件为什么会莫名其妙不存在?...这个jira是说HMaster在确认父目录是否可以被删除时,如果检查引用文件(检查是否存在、检查是否可以正常打开)抛出IOException异常,函数就会返回没有引用文件,导致父region被删掉。

    2.1K71

    Make 命令教程

    像这样的规则,都写在一个叫做Makefile的文件,Make命令依赖这个文件进行构建。Makefile文件也可以写makefile, 或者用命令行参数指定为其他文件名。....PHONY: clean clean: rm *.o temp 声明clean是"伪目标"之后,make就不会去检查是否存在一个叫做clean的文件,而是每次运行都执行对应的命令。...它指定了"目标"是否重新构建的判断标准:只要有一个前置文件不存在,或者有过更新(前置文件的last-modification时间戳比目标的时间戳新),"目标"就需要重新构建。...比如,$@是 src/input.c,那么$(@D) 的值 src ,$(@F) 的值 input.c。...首先判断 dest 目录是否存在,如果不存在就新建,然后,$< 指代前置文件(src/%.txt), $@ 指代目标文件(dest/%.txt)。

    2K40

    深入探讨 Undefined

    Undefined这个概念听起来很简单,不过你知道应该怎样检查JavaScript的变量或属性是否真的存在吗? 做这件事最好的方法是什么? 我们如何涵盖所有的边界值?...这是一个原始值,只要声明了变量,就会为其分配此undefined值,直到您以编程的手段其分配不同的值。 此外,每当函数完成执行并返回一个没有给定的值时,它默认返回undefined。 ?...如果您想分辨“有未定义值的属性”和“根本不存在的属性”这两者,应该怎么做呢? 使用typeof或者 ===都会给你一个undefined的值。 使用in运算符能够检查对象是否存在某个属性: ?...一般来说,如果要测试是一个属性否存在,那么就用 in/hasOwnProperty,如果检查属性或变量的值,则用 typeof。 通过例子进行总结 检查变量是否存在: ?...检查对象上的属性是否存在,无论是否已经它分配了值: ? 检查对象上是否存在属性,并且属性具有值集(真值或假) ?

    84730

    【Linux】Linux 项目自动化构建工具 -- makemakefile 的使用

    一个企业,会不会写makefile,从一个侧面说明了一个是否具备完成大型工程的能力。...---- 二、如何编写 makefile 编写 makefile,最重要的是编写 依赖关系和依赖方法;依赖关系是指一个文件依赖另外一个文件,即想要得到一个文件,目录下必须先有另外一个文件;依赖方法则是指如何根据依赖文件来得到目标文件...” 或 “makefile” 的文件;如果找到,它会把文件的第一个目标文件作为最终的目标文件 (上面例子的 test.out),但是如果 test.out 所依赖的 test.o 文件不存在,那么...make 会在当前文件找目标 test.o 文件的依赖性,再根据该一个规则来生成 test.o 文件 (类似于数据结构栈 – 后进先出); 如果 test.o 的依赖文件也不存在,则继续执行该规则,...在上面的例子,test.out 依赖的 test.o 不存在,make 会去寻找以 test.o 目标文件的依赖关系;test.o 依赖的 test.s 也不存在,make 又会去找 以 test.s

    1K00

    C编译: makefile基础

    所有的依赖关系都记录在makefile文本文件。我们只需要make helloworld,make会根据依赖关系,自上而下的找到编译该文件所需的所有依赖关系,最后再自下而上的编译。...make是一个递归创建的过程: Base Case 1: 如果当前依赖关系没有说明前提文件,那么直接执行操作。...如果当前目标文件依赖关系所需的前提文件不存在,或者前提文件发生改变,那么以前提文件新的目标文件,寻找依赖关系,创建目标文件。 ? 虚线: 依赖关系检索 上面是make的核心功能。...$*          当前依赖关系,发生改变的前提文件 $$          字符"$" 如果目标或者前提文件是一个完整路径,我们可以附加D和F来提取文件夹部分和文件名部分,比如$(@F)表示目标文件的文件名部分...其他 makefile的续行符\ makefile中经常会定义下面依赖关系: all: 如果make后没有跟随文件名,那么将执行该依赖关系。 clean: 常用于清理历史文件。

    1.2K100

    浅谈 Make 命令

    像这样的规则,都写在一个叫做Makefile的文件,Make命令依赖这个文件进行构建。Makefile文件也可以写makefile, 或者用命令行参数指定为其他文件名。....PHONY: clean clean: rm *.o temp 声明clean是"伪目标"之后,make就不会去检查是否存在一个叫做clean的文件,而是每次运行都执行对应的命令。...它指定了"目标"是否重新构建的判断标准:只要有一个前置文件不存在,或者有过更新(前置文件的last-modification时间戳比目标的时间戳新),"目标"就需要重新构建。...比如,$@是 src/input.c,那么$(@D) 的值 src ,$(@F) 的值 input.c。...首先判断 dest 目录是否存在,如果不存在就新建,然后,$< 指代前置文件(src/%.txt), $@ 指代目标文件(dest/%.txt)。

    1.3K10
    领券