当前位置: 首页 > news >正文

make_01_Program_02_makefile 如何判断文件在不在

在 Makefile 中,判断一个文件是否存在可以通过使用 if 函数和 Make 内置的条件判断来实现。GNU Make 提供了一种方法,可以使用 test 命令或通过检查变量来确定文件的存在性。

方法 1:使用 shell 命令

可以利用 shell 函数和 test 命令来检查文件是否存在。以下是一个示例:

FILE = myfile.txt

ifeq ($(shell test -e $(FILE) && echo yes),yes)
    FILE_EXISTS = true
else
    FILE_EXISTS = false
endif

all:
    @if [ "$(FILE_EXISTS)" = "true" ]; then \
        echo "File $(FILE) exists."; \
    else \
        echo "File $(FILE) does not exist."; \
    fi

运行示例

如果 myfile.txt 存在,输出将是:

File myfile.txt exists.

如果 myfile.txt 不存在,输出将是:

File myfile.txt does not exist.

方法 2:使用变量和 wildcard

另一种方法是利用 wildcard 函数来检查文件是否存在。wildcard 会返回匹配到的文件名,如果文件不存在,返回空字符串。

FILE = myfile.txt
EXISTING_FILE = $(wildcard $(FILE))

all:
    @if [ "$(EXISTING_FILE)" != "" ]; then \
        echo "File $(FILE) exists."; \
    else \
        echo "File $(FILE) does not exist."; \
    fi

运行示例

同样,运行 make,如果 myfile.txt 存在,您将得到:

File myfile.txt exists.

如果文件不存在,则会得到:

File myfile.txt does not exist.

总结

在 Makefile 中,可以使用 shell 命令结合 testwildcard 函数来判断文件的存在性。这两种方法都能有效地帮助您在构建过程中进行条件判断,从而根据文件的存在与否进行不同的操作。选择适合您需求的方式即可。


文章转载自:
http://alcoholic.zekgq.cn
http://arrival.zekgq.cn
http://aesthesia.zekgq.cn
http://bookbinder.zekgq.cn
http://charolais.zekgq.cn
http://blastissimo.zekgq.cn
http://bloodroot.zekgq.cn
http://bardian.zekgq.cn
http://abusiveness.zekgq.cn
http://achieve.zekgq.cn
http://aif.zekgq.cn
http://chilled.zekgq.cn
http://amos.zekgq.cn
http://amerasian.zekgq.cn
http://advect.zekgq.cn
http://appall.zekgq.cn
http://asianic.zekgq.cn
http://cane.zekgq.cn
http://aerotactic.zekgq.cn
http://boresome.zekgq.cn
http://bowered.zekgq.cn
http://armorist.zekgq.cn
http://ariose.zekgq.cn
http://caudillo.zekgq.cn
http://choreograph.zekgq.cn
http://buckjumper.zekgq.cn
http://burgundy.zekgq.cn
http://chaulmoogra.zekgq.cn
http://ailurophile.zekgq.cn
http://breakbone.zekgq.cn
http://www.dtcms.com/a/114056.html

相关文章:

  • 玩机搞机基本常识-------安卓机型ROOT 官方面具与阿尔法面具如何隐藏root权限步骤操作全程解析
  • 实践:用Ollama+DeepSeek-R1搭建AI知识库
  • LangChain集成DeepSeek实现AI对话
  • ESP826601S AT指令AT+MQTTUSERCFG报错解决方法
  • 矩阵分解中的梯度下降:详细实现方案(包含数学推导、代码实现和优化技巧)
  • 量化交易从0到1(理论篇)
  • 网络编程:自定义协议设计IO多路复用
  • cloud项目批量修改主机号
  • Linux系统安装Postgre和Postgis教程
  • 交换机与ARP
  • Java 实现二分查找:[通俗易懂的算法系列之四]
  • word导出PDF老是目录格式变化的问题
  • 包含列表的字符串数据拆分成多列
  • 数字孪生驱动医药仓库安全革命:从被动响应到主动防御的范式转型
  • 我与数学建模之终章
  • spring-ai-alibaba第九章使用Milvus构建大模型RAG应用
  • Python编码规范
  • 【2020】【论文笔记】基于二维光子晶体的光控分光比可调Y——
  • BUUCTF-web刷题篇(13)
  • 高精度矢量内积计算方法 (单精度浮点, 超长矢量)
  • hashtable遍历的方法有哪些
  • uname
  • SpringBoot洗衣店订单管理系统设计与实现
  • LeetCode 3047 求交集区域内的最大正方形面积
  • VScode连接CentOS 7.6虚拟机
  • B站左神算法课学习笔记(P8):贪心
  • Python函数一(五)
  • 算法 | 基于蜘蛛蜂优化算法求解带时间窗的车辆路径问题研究(附matlab代码)
  • ZKmall开源商城:基于Spring Boot 3的高效后端架构设计与实践
  • 三维点云数据的哈希快速查找方法