我是靠谱客的博主 英俊大侠,最近开发中收集的这篇文章主要介绍Makefile之几个常用函数(addprefix、addsuffix、if、wildcard、filter、call),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

介绍几个常用的makefile函数

  1. addprefix.
    $(addprefix <prefix>, <name1 name2 ...>)

    功能:把<prefix>加到name序列中的每一个元素前面。

    result = $(addprefix %., c cpp)
    test:
        @echo $(result)

    输出:%.c %.cpp

  2. addsuffix 用法与addprefix相同,只是一个是前缀,一个是后缀。
  3. if.
    $(if <condition>, <then-part>,<else-part>)

    功能:<condition>参数是 if的表达式,如果其返回的为非空字符串,那么这个表达式就相当于返回真,于是,<then-part>会被计算,返回计算结果字符串;否则<else- part>会被计算,返回计算结果字符串。<else-part>可以省略。

    suffix := 
    result1 := $(if $(suffix), $(addprefix %.,$(suffix)), %)
    
    suffix := c cpp
    result2 := $(if $(suffix), $(addprefix %.,$(suffix)), %)
    
    test:
        @echo result1 is $(result1)
        @echo result2 is $(result2)

    输出:

    result1 is %
    result2 is %.c %.cpp
  4. wildcard.
    $(wildcard <pattern1 pattern2 ...>)

    功能:展开pattern中的通配符

    $(wildcard src/*)

    输出:得到src目录下的文件列表

  5. filter.
    $(filter <pattern1 pattern2 ...>, <text>)

    功能:以<pattern>模式过滤<text>字符串中的单词,保留符合模式<pattern>的单词。可以有多个模式。

    $(filter %.c %.cpp, $(wildcard src/*))

    输出:src目录下所有后缀是.c和.cpp的文件序列。

  6. call.
    $(call <expression>,<param1>,<param2>,...)

    功能:<expression>中有$(1),$(2)这种占位符,call函数使用<param1>,<param2>来替换$(1),$(2),并计算表达式的值,返回结果字符串。

    listfile  = $(filter $(if $(2),$(addprefix %.,$(2)),%), 
                        $(wildcard $(addsuffix $(SLASH)*, $(1))))
    
    list_cc = $(call listfile, src, c cpp)

    输出:src目录下所有后缀是.c和.cpp的文件序列

最后

以上就是英俊大侠为你收集整理的Makefile之几个常用函数(addprefix、addsuffix、if、wildcard、filter、call)的全部内容,希望文章能够帮你解决Makefile之几个常用函数(addprefix、addsuffix、if、wildcard、filter、call)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部