Makefile 中的通配符目标

2024-01-07

如何压缩以下 Makefile 目标?

$(GRAPHDIR)/Complex.png: $(GRAPHDIR)/Complex.dot
        dot $(GRAPHDIR)/Complex.dot -Tpng -o $(GRAPHDIR)/Complex.png

$(GRAPHDIR)/Simple.png: $(GRAPHDIR)/Simple.dot
        dot $(GRAPHDIR)/Simple.dot -Tpng -o $(GRAPHDIR)/Simple.png

$(GRAPHDIR)/IFileReader.png: $(GRAPHDIR)/IFileReader.dot
        dot $(GRAPHDIR)/IFileReader.dot -Tpng -o $(GRAPHDIR)/IFileReader.png

$(GRAPHDIR)/McCabe-linear.png: $(GRAPHDIR)/McCabe-linear.dot
        dot $(GRAPHDIR)/McCabe-linear.dot -Tpng -o $(GRAPHDIR)/McCabe-linear.png

graphs: $(GRAPHDIR)/Complex.png $(GRAPHDIR)/Simple.png $(GRAPHDIR)/IFileReader.png $(GRAPHDIR)/McCabe-linear.png

--

Using GNU Make 3.81.


这个概念被称为模式规则。您可以在以下位置阅读相关内容:GNU 制作手册 http://www.gnu.org/software/make/manual/make.html#Pattern-Rules.

$(GRAPHDIR)/%.png: $(GRAPHDIR)/%.dot
        dot $< -Tpng -o $@

graphs: $(patsubst %,$(GRAPHDIR)/%.png, Complex Simple IFileReader McCabe)\

or just

%.png: %.dot
        dot $< -Tpng -o $@

graphs: $(patsubst %,$(GRAPHDIR)/%.png, Complex Simple IFileReader McCabe)

您还可以通过将模式之一提取到单独的变量中来删除所有重复PNG_PATTERN像这样:

PNG_pattern=$(GRAPHDIR)/%.png

$(PNG_pattern): $(GRAPHDIR)/%.dot
        dot $< -Tpng -o $@

graphs: $(patsubst %,$(PNG_pattern), Complex Simple IFileReader McCabe)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Makefile 中的通配符目标 的相关文章

  • GNU make 的回溯

    有没有办法让 GNU make 打印导致命令失败时执行的目标的 回溯 我经常处理严重混淆的 makefile 同时解决在新系统上构建软件的可移植性问题 这对于 make 来说似乎是一件非常简单的事情 这将极大地帮助调试 但我找不到任何方法来
  • 用于在标头更改时重新编译的简单 C 项目的示例 makefile

    有谁有完整的 makefile 可以执行以下操作 如果 HEADER 文件发生更改 则重建项目 cpp 文件在 makefile 中列出 头文件未在 makefile 中列出 头文件允许与 cpp 文件具有不同的名称 部分cpp文件没有头文
  • 在 Mac 上更新 Make 版本

    我正在尝试更新 mac 上的 make 版本 但遇到了问题 最小项目依赖项是 4 1 但我的版本似乎是 3 81 我已将 Xcode 更新到最新版本并安装了命令行工具 但它似乎仍然是旧版本 有谁遇到过这个问题或知道解决方法吗 这是我所做的
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 如果未设置,则从控制台读取 Makefile 变量

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

    我有一个 Android 项目 其中包含大量 C 本机代码 但是 我无法构建我的库 因为它无法找到 vector h 头文件 可能是什么问题 我在几乎所有页面中包含的示例 include
  • 如何确保目标在 makefile 中的所有其他构建规则之前运行?

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

    我的同事使用Ubuntu 我使用openSUSE 我们使用相同的makefile编译相同的源代码 我的环境运行良好 但我的同事不能 总是输出无法识别 e选项 我们检查makefile 只发现echo命令使用 e option Ubuntu的
  • 如何像C99一样使用make和编译?

    我正在尝试使用 Makefile 编译 Linux 内核模块 obj m main o all make C lib modules shell uname r build M PWD modules clean make C lib mo
  • 从 GNU Makefile 调用 `command -v find`

    我使用 shell bash 但我需要可移植性 和 GNU Makefile 我有这个代码 check commands command v find gt dev null command v asdf gt dev null 正如假设的
  • 链接器失败:存档中的成员不是对象

    我正在尝试在 Windows 7 上使用 64 位 mingw 构建 Open CASCADE 6 7 1 库 我正在使用x86 64 4 9 1 release posix seh rt v3 rev1 from mingw w64 项目
  • make:仅针对单个目标禁用子目录中的并行构建

    我有一个相当庞大的由自动工具驱动的项目 它位于一个目录树中 该目录树由许多带有子目录的目录组成 它有一个目标check 在每个子目录以及主目录中 执行大量自动化测试 这check目标是递归构建的 并行构建和测试 通过 j选项 make 适用
  • makefile 中的预构建步骤

    如何运行必须在所有其他 makefile 命令之前执行的脚本 如果没有要构建的内容 则不执行脚本会很好 但不是强制性的 我搜索过 SO 和 Google 但找不到任何东西 我有这个解决方法 myscript bat output is em
  • 如何处理GNU make中的子make错误?

    我在 Makefile GNU 中使用子 make 但每当子 make 失败时 主 make 都会继续成功运行 我希望每当我的子 make 失败时我的主 Makefile 都会失败 我怎么做 all pushd STA DIR make c
  • 从 make 文件中禁用 make 内置规则和变量

    我想根据传递禁用内置规则和变量 r and R options http www gnu org software make manual make html Options Summary从 make 文件内部到 GNU make 也欢迎
  • 我可以使用 git 克隆后出现的文件吗?

    我试图理解 make 问题 但不确定发生了什么 我不确定我遇到的是 make 问题还是 git 问题 如果我执行 git clone git git openssl org openssl git openssl git 然后我得到了 Op
  • 如何为 C 和 C++ 制作 makefile,源代码位于子目录中

    我有一个项目目前在 OS X 上的 Xcode 中构建 我正在尝试构建一个 makefile 以允许它在其他 Un x 系统上构建 我是编写 makefile 的新手 所以我一直根据网络上的各种示例拼凑出一个 makefile 也许并不奇怪
  • make - 在同一个 eval 调用中定义多个变量

    我想用make s eval函数在一个内部定义多个 动态命名的 变量foreach 但我无法得到eval来做这项工作 我尝试过这样的事情 eval var1 val1 var2 val2 它不起作用 var1被定义为val1 var2 va
  • 具有此处文档重定向的 Makefile 配方

    有谁知道如何在菜谱上使用此处文档重定向 test sh lt
  • 我如何知道提供了什么 -j 选项

    In Racket http racket lang org在构建系统中 我们有一个构建步骤 它调用一个可以同时运行多个并行任务的程序 由于这是从调用的make 尊重 j选项make最初是用 然而 据我所知 没有办法获得的价值 j从里面的选

随机推荐

  • 如何禁用下拉元素中的特定项目

    如何使用 jQuery 或 JavaScript 禁用下拉元素的某些项目 与禁用任何其他 HTML 元素相同的方式 使用 option selector prop disabled true 看到它在action http jsfiddle
  • Libgdx box2D 中的碰撞对于某些物体失败

    我正在使用 libgdx 和 box2d 开发我的第一个游戏 我正在使用调试渲染器来测试我的对象 我创建了一些类似汽车的物体 每辆车都有一个主体 它是一个6点的大多边形 长约1米 高0 7米 并有2个通过旋转关节连接的车轮 主车还通过旋转接
  • GDI+ LockBits()/UnLockBits() 异常

    我的程序是用 C 编写的 并在低级别上使用位图进行操作 一切工作正常 但有时 非常罕见 但稳定 会发生异常 通用 GDI 异常 并且很难重现这种情况 函数 LockBits 和 UnLockBits 发生异常 它包含错误代码 2147467
  • 如何在 QML 中捕获信号?

    如何将信号从一个 qml 组件发送到另一个 下面是一个例子 Rectangle id main width 360 height 360 signal clicked Text id testStr anchors centerIn par
  • Ingress 不转发请求 - 适用于 Windows 和 kubernetes 的 Docker 桌面

    EDIT 我删除了 minikube 在 Windows 的 Docker 桌面中启用了 kubernetes 并安装ingress nginx手动 helm upgrade install ingress nginx ingress ng
  • 使用powershell和svn删除未版本控制的文件

    我正在尝试编写一个构建脚本来使用 Powershell 签出代码 我需要能够使用 SVN 存储库中的适当更改来替换对工作副本所做的任何修改 这还包括删除在存储库中删除但未在工作副本中删除的所有文件 不幸的是 我无法进行干净的签出 因为每次运
  • Xdebug 3 docker mac PhpStorm 损坏的管道

    I see There was a problem sending 179 bytes on socket 11 Broken pipe 在 xdebug log 中看不到原因 这几天一直在兜圈子 尝试各种东西 我究竟做错了什么 X调试3
  • HTML 中的绝对路径不起作用

    我正在尝试使用小型 JavaScript 代码构建 HTML 模板 这是内容 在根目录下 我构建了两个文件 索引 html
  • 检查密码强度的最佳方法是什么?

    确保用户提供的密码是注册或更改密码表单中的强密码的最佳方法是什么 我的一个想法 用Python def validate password passwd conditions met 0 conditions total 3 if len
  • PK在深色模式和浅色模式下绘制不同的结果

    使用时PKDrawing在暗模式下生成的图像图像来自矩形 比例 https developer apple com documentation pencilkit pkdrawing 3237277 imagefromrect返回白色的钢笔
  • WPF 异步任务 阻塞 UI

    我已经与Task类型 一切都很好Task什么也不返回 例如 XAML
  • Python、Windows 和多重处理

    我有一个最初在 Linux 上构建的 Python 程序 现在我正尝试将其移植到 Windows 我在包含所有依赖项的虚拟环境中运行该程序 我的程序使用 pip install find linkswheelsmy module 作为轮子安
  • 为什么这个普通的 js 函数在 d3v3 和 d3v4 中返回不同的结果

    这是一个基于一些从令人惊叹的 d3 js v3 到 v4 的模板的 MWE 数据位于 csv 文件中 两个示例都加载相同的文件 干净 day movie1 movie2 movie3 movie4 movie5 movie6 1 20 8
  • 识别发生特定模式变化的行

    简介 背景 我需要分析 spss 数据表中的受访者数据 但我认为最好将这些数据复制到 Excel 或 Google 表格中 以进行我即将描述的特定分析 600 多名参与者被要求回答 100 个问题 每个参与者在数据中都有自己的行 他们对问题
  • 为什么我会收到“拆分包”警告?

    我正在构建一个 kar 文件 但是当我运行时mvn package我收到此错误 INFO maven bundle plugin 2 4 0 bundle default bundle common WARNING Bundle se em
  • 如何重命名物理数据库文件

    我使用 tsql 来分离数据库 如下所示 EXEC sp detach db dbname my db 然后我使用 PHP 来重命名物理文件 我能够重命名 mdf 文件 但不能重命名 ldf 文件 我什至尝试过dos命令REN但这对于 ld
  • R Shiny - 错误:没有名为“shinyjs”的包

    当我在本地运行我的应用程序时 它运行得很好 但是当我将它托管在闪亮应用程序io出现这个错误 发生了错误 应用程序无法启动 value 3L 中的错误 没有名为 shinyjs 的包 调用 本地 tryCatch gt tryCatchLis
  • 如何在巨大的 XML 文件中进行命令行 XPath 查询?

    我有一个 XML 文件集合 其中一些文件非常大 最多约 5000 万个元素节点 我在用xmllint用于验证这些文件 由于流 API 即使对于巨大的文件 它也能很好地工作 xmllint loaddtd stream valid path
  • distanceFromLocation 方法如何工作?

    我经常使用distanceFromLocation方法用于CLLocation对象来获取与其他位置的距离 枚举 CLLocations 数组 然后使用此方法将每个位置与我的参考位置进行比较 我很想知道使用的处理 内存影响distanceFr
  • Makefile 中的通配符目标

    如何压缩以下 Makefile 目标 GRAPHDIR Complex png GRAPHDIR Complex dot dot GRAPHDIR Complex dot Tpng o GRAPHDIR Complex png GRAPHD