• makefile中编写查询文件夹是否存在以及创建


    要在Makefile中查询文件夹是否存在,如果不存在则创建它,你可以使用ifeq条件语句结合ifeq函数、mkdir命令和条件判断来实现。下面是一个示例Makefile,演示如何查询文件夹是否存在,如果不存在则创建文件夹

    # 文件夹名
    FOLDER_NAME := my_folder
    
    # 查询文件夹是否存在
    ifeq ($(wildcard $(FOLDER_NAME)),)
    # 如果文件夹不存在,则创建文件夹
    create_folder:
        @echo "Creating $(FOLDER_NAME) folder"
        @mkdir -p $(FOLDER_NAME)
    else
    # 如果文件夹已经存在,则不进行任何操作
    create_folder:
        @echo "$(FOLDER_NAME) folder already exists"
    endif
    
    # 默认目标
    .PHONY: default
    default: create_folder
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在上面的示例中,我们首先定义了一个变量FOLDER_NAME,用于存储文件夹名。然后,在create_folder目标中,我们使用wildcard函数来检查文件夹是否存在。如果文件夹不存在,就会执行创建文件夹的操作,否则会输出文件夹已存在的消息。

    你可以在终端中运行make命令来执行这个Makefile,并根据文件夹是否存在来执行不同的操作。

    你可以将检查和创建文件夹的逻辑封装成一个Makefile中的函数接口。下面是一个示例Makefile,定义了一个名为check_and_create_folder的函数接口,它可以用于批量检查和创建文件夹:

    # 定义检查和创建文件夹的函数接口
    define check_and_create_folder
        # 第一个参数是文件夹名
        FOLDER_NAME := $(1)
        ifeq ($(wildcard $(FOLDER_NAME)),)
            @echo "Creating $(FOLDER_NAME) folder"
            @mkdir -p $(FOLDER_NAME)
        else
            @echo "$(FOLDER_NAME) folder already exists"
        endif
    endef
    
    # 示例用法:检查和创建多个文件夹
    .PHONY: create_folders
    create_folders:
        $(call check_and_create_folder, folder1)
        $(call check_and_create_folder, folder2)
        $(call check_and_create_folder, folder3)
    
    # 默认目标
    .PHONY: default
    default: create_folders
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在上面的示例中,我们首先定义了check_and_create_folder函数接口,该接口接受一个参数作为文件夹名。然后,在create_folders目标中,我们使用$(call ...)来调用函数接口,并传递不同的文件夹名作为参数,以便批量检查和创建文件夹。

    你可以在终端中运行make create_folders命令来执行这个Makefile,并根据传递的文件夹名参数来执行检查和创建文件夹的操作。

  • 相关阅读:
    Access denied for user ‘itstar‘@‘%localhost‘ to database ‘sc‘
    【计算机毕业设计】网上商城购物系统
    机器学习——监督学习:回归
    CG-68 冻土传感器浅谈工作原理
    MQ---第六篇
    Unity 获取对象的方法
    【OpenVINO】 使用 OpenVINO CSharp API 部署 PaddleOCR 项目介绍
    iPhone 隐私新规下的“大地震”:四大平台损失近百亿美元,“连用户是男是女都分不清”
    HTML5 基础
    c#ushort转十六进制
  • 原文地址:https://blog.csdn.net/qq_36683398/article/details/132827849