makefile 中的 wildcard 与 patsubst 函数

2023-05-16

makefile 里的函数跟它的变量很相似——使用的时候,你用一个 $ 符号跟开括号,函数名,空格后跟一列由逗号分隔的参数,最后用关括号结束。例如,在 GNU Make 里有一个叫 'wildcard' 的函 数,它有一个参数,功能是展开成一列所有符合由其参数描述的文件名,文件间以空格间隔。你可以像下面所示使用这个命令:
    
   SOURCES = $(wildcard *.c)
    
    这行会产生一个所有以 '.c' 结尾的文件的列表,然后存入变量 SOURCES 里。当然你不需要一定要把结果存入一个变量。
    另一个有用的函数是 patsubst ( patten substitude, 匹配替换的缩写)函数。它需要3个参数——第一个是一个需要匹配的式样,第二个表示用什么来替换它,第三个是一个需要被处理的由空格分隔的字列。例如,处理那个经过上面定义后的变量,
    
    OBJS = $(patsubst %.c,%.o,$(SOURCES))
    
    这行将处理所有在 SOURCES 字列中的字(一列文件名),如果它的 结尾是 '.c' ,就用 '.o' 把 '.c'取代。注意这里的 % 符号将匹 配一个或多个字符,而它每次所匹配的字串叫做一个‘柄’(stem) 。 在第二个参数里, %被解读成用第一参数所匹配的那个柄。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

makefile 中的 wildcard 与 patsubst 函数 的相关文章

  • 如何调用使用 Define 创建的 GNU make 宏?

    在我的 Makefile 中调用 GREP 的两种方式有什么区别吗 我有什么理由应该使用其中之一 两者似乎产生相同的结果 define GREP word 3 shell echo define FOO 0xfff00100 endef a
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • 使用 .INTERMEDIATE 在 makefile 中进行不可靠的并行构建?

    我有一个可以生成多个输出文件的工具 众所周知 在 make 中很难建模 我正在使用食谱GNU Makefile 规则从单个源文件生成一些目标 https stackoverflow com questions 2973445 gnu mak
  • 安装 libjpeg v8 到 /opt/local

    如何在 OSX 上将 libjpeg 8 安装到 opt local 我问的原因是我想用以下方法制作大脑活动的小电影MNE C 库 http www nmr mgh harvard edu martinos userInfo data MN
  • java Runtime.getRunTime().exec 和通配符?

    我正在尝试使用删除垃圾文件 Process p Runtime getRuntime exec 只要我不使用通配符 它 就可以正常工作 即 Process p Runtime getRuntime exec bin rm f specifi
  • 如果未设置,则从控制台读取 Makefile 变量

    我正在更新一个从外部源访问某些资源的 Makefile 即存在以下形式的规则 External cvs up 对于不受限制的资源 它可以按预期工作 现在 出现了功能漂移 外部资源需要更复杂的登录 因此规则已更改为与此没有太大不同的内容 Ex
  • .ko 文件是如何构建的

    我正在尝试将我自己的驱动程序移植到Beagle 板 xm arm cortex A8 在移植时我试图弄清楚如何 ko文件实际构建 在我们的Makefile我们只有一个命令来构建 o file 怎样是一个 ko文件已建立 使用Linux 2
  • 查找和替换正则表达式问题

    感谢这里对我其他问题的所有大力帮助 我开始掌握正则表达式 但我仍然对这个一无所知 我的代码是 StreamReader reader new StreamReader fDialog FileName ToString string con
  • 如何确保目标在 makefile 中的所有其他构建规则之前运行?

    我有一个 C 项目 其中包含所有其他 C 文件所依赖的生成文件 我试图在任何其他编译开始之前强制生成并编译该文件 通常它就像将该文件首先放入all 目标 但复杂的是我的 Makefile 也是由构建系统生成的 我只能将片段附加到 Makef
  • makefile 使用目标中定义的变量[重复]

    这个问题在这里已经有答案了 如何使用 make 目标中定义的变量 PHONY foo VAR GLOBAL shell cat tmp global foo echo local gt tmp local VAR LOCAL shell c
  • SQL Like 带有子查询

    我怎样才能做到这一点 SELECT FROM item WHERE item name LIKE SELECT equipment type FROM equipment type GROUP BY equipment type 内部子查询
  • Java泛型 - 实现像map这样的高阶函数

    我决定用 Java 编写一些常见的高阶函数 map filter reduce 等 这些函数通过泛型实现类型安全 但我在一个特定函数中遇到通配符匹配问题 为了完整起见 函子接口是这样的 The interface containing th
  • 是否可以使用现有的 Makefile 在 Code::Blocks 中构建项目?

    编辑 我发现项目属性中有一个选项可以设置自定义生成文件 现在项目构建良好 现在 我偶然发现了如何在单击 运行 时指定要运行的目标可执行文件 代码 块 http www codeblocks org is an IDE https en wi
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 从 GNU Makefile 调用 `command -v find`

    我使用 shell bash 但我需要可移植性 和 GNU Makefile 我有这个代码 check commands command v find gt dev null command v asdf gt dev null 正如假设的
  • 您如何使编译器行更短?

    通常 当我与其他人一起处理一个项目时 随着时间的推移 编译器在 Makefile 中获取的库路径和包含路径的数量会变得越来越多 此外 路径也可能会变得很长 这是一个例子 g c pipe O2 Wall W DQT BOOTSTRAPPED
  • VB.NET“Like”运算符中可能存在错误?

    为什么下面的评价为True Dim result b Like a b Thanks EDIT 为了概括这一点 以下返回True String1 Like AnyText1 AnyText2 AnyText String1 VBA 工作正常
  • 在 Android 构建系统中包含预构建的静态库

    我需要基于预构建的静态库构建一个共享库 我的 makefile src android external mycode Android mk LOCAL PATH call my dir include CLEAR VARS LOCAL A
  • 是否可以在 Mac OS X 上构建 FreeGLUT?

    我正在做一些关于 OpenGL 的教程 http www arcsynthesis org gltut Basics Tutorial 2001 html那个使用FreeGLUT http freeglut sourceforge net
  • 使用 Makefile 项目在 Visual Studio 中自定义调试命令

    我在 Visual Studio 2010 中有一个由 Makefile 支持的项目 实际上使用 NAnt 但这不是重点 构建过程的输出是一个 elf 文件 我有一个单独的非 VStudio 调试器 可以在该 elf 文件上运行来调试它 构

随机推荐

  • linux环境C程序设计--安装D-Bus

    根据书上写的指令进行操作 xff0c 结果显示错误在安装dbus 1 dbg的时候错误 xff0c 具体原因没仔细看 xff0c 但是下面提供了另一个安装的替换选项 xff0c 其命令如下 xff1a 安装GTK 43 开发包 xff0c
  • iOS开发笔记之NSFileManager的使用

    对于文件的管理 xff0c 从项目需求中出发 xff0c 有如下的学习成果 查看文档基本能完成基本的需求 文档中部分常用的方法 xff1a xff08 基本基于path和URL成对存在 xff0c 这里主要解读关于path的 xff09 获
  • 基于 FFmpeg 的播放器 demo

    这里的播放器演示程序用于播放一个本地文件 xff0c 因而不需要关心播放网络上的媒体数据时的网络传输问题 对于播放本地媒体文件的播放器来说 xff0c 所要完成的工作主要包括 xff1a 解封装 gt 音频解码 视频解码 gt 对于音频来说
  • mysql查看当前使用的配置文件my.cnf的方法

    1 查看是否使用了指定目录下的my cnf my cnf是mysql启动时加载的配置文件 xff0c 一般会放在mysql的安装目录中 xff0c 用户也可以放在其他目录加载 安装mysql后 xff0c 系统中会有多个my cnf文件 x
  • JUC中对线程的协同合作控制

    线程的协同合作控制 CountDownLatch使用代码演示小结 Semaphore使用小结 Condition使用代码 CyclicBarrier使用 xff1a 代码演示 小结 在使用多线程的时候 xff0c 我们可以使用一些工具来达到
  • Ubuntu+Anaconda+TA-Lib

    查看ubuntu版本 span class token function cat span etc issue 更换apt源 1 备份原有软件源 sudo cp etc apt sources list etc apt sources li
  • 服务器配置公网ftp服务端(软件和python代码两种方法)

    FileZilla Server超详细配置 前言一 配置教程1 General settings xff08 常规设置 xff09 2 Passive mode settings xff08 被动传输模式设置 xff09 3 Securit
  • 使用FFmpeg生成高清gif图

    前言 使用FFmpeg能够很方便的给视频片段或GIF加水印 xff0c 同时还能对选取的片段生成GIF图 xff0c 但是在使用默认FFmpeg设置情况下 xff0c 生成的GIF画质很差 xff0c 有很明显的栅格化现象 如何生成高质量的
  • PostgreSQL的SSL部署

    随着云服务器的兴起 xff0c 越来越多的数据库服务器被安装在远程 用SSL连接代替明文连接 xff0c 是数据库的基本安全功能 很庆幸PostgreSQL很早就支持openSSL xff0c 各发行版本都带有openSSL连接库 xff0
  • 八数码问题是否有解

    八数码问题 描述 xff1a 3 3的棋盘有八个数字 xff08 1 8 xff09 和一个空位 xff0c 数字可以滑动 问题研究的是从一个棋盘状态到另一个状态 是否有解的判定 12345678 对于上面的棋盘状态 xff0c 我们可以表
  • xrdp和vnc的区别

    在很多场景下 xff0c 我们需要远程连接到Linux服务器 本文是Ubuntu xff0c 传统的连接主要分为两种 第一种 xff1a 通过SSH服务 xff08 使用xshell等工具 xff09 来远程访问 xff0c 编写终端命令
  • 和风天气API数据分析

    注册和风天气获取key 请求数据时需要用到 xff0c 具体可查看文档 请求数据示例 3 10天天气预报 34 HeWeather6 34 34 basic 34 34 cid 34 34 CN101010100 34 34 locatio
  • 提供python接口有用的库

    python版本 windows上使用的是python2 7 2 32位版本 如何查看python是32位还是64位 xff1a import struct struct calcsize 34 P 34 如果是4 xff0c 说明是32位
  • Linux添加库路径的两种方法

    库文件在连接 静态库和共享库 和运行 仅限于使用共享库的程序 时被使用 xff0c 其搜索路径是在系统中进行设置的 一般 Linux 系统把 lib 和 usr lib 两个目录作为默认的库搜索路径 xff0c 所以使用这两个目录中的库时不
  • 动态库和静态库在编译C语言时使用方法简述

    函数库分为静态库和动态库两种 创建Linux静态库和Linux动态库和使用它们在这里将以举例的形式详述一下 静态库在程序编译时会被连接到目标代码中 xff0c 程序运行时将不再需要该静态库 动态库在程序编译时并不会被连接到目标代码中 xff
  • Linux下的tar压缩解压缩命令详解

    tar c 建立压缩档案 x xff1a 解压 t xff1a 查看内容 r xff1a 向压缩归档文件末尾追加文件 u xff1a 更新原压缩包中的文件 这五个是独立的命令 xff0c 压缩解压都要用到其中一个 xff0c 可以和别的命令
  • Linux环境下安装MATLAB2012

    在GNU Debian环境下 xff0c 使用iso镜像安装Matlab2012 xff0c 首先需要用mount命令挂载镜像 xff0c mount o loop t iso9660 source mount point 具体的讲 mou
  • string与string.h以及cstring的关系区别

    c 43 43 中 string与string h 的作用和区别 如下代码 include lt string h gt void main string aaa 61 34 abcsd d 34 printf 34 looking for
  • gcc与g++的比较以及库的使用说明

    一 xff1a gcc与g 43 43 比较 编 译c c 43 43 代码的时候 xff0c 有人用gcc xff0c 有人用g 43 43 xff0c 于是各种说法都来了 xff0c 譬如c代码用gcc xff0c 而c 43 43 代
  • makefile 中的 wildcard 与 patsubst 函数

    makefile 里的函数跟它的变量很相似 使用的时候 xff0c 你用一个 符号跟开括号 xff0c 函数名 xff0c 空格后跟一列由逗号分隔的参数 xff0c 最后用关括号结束 例如 xff0c 在 GNU Make 里有一个叫 39