Make:在静态模式规则中设置特定于目标的变量

2024-06-21

我正在使用静态模式规则编写 Makefile,并且我希望为 TARGETS 的每个元素分配一个变量给当前目标名称(此处为“%”)。

TARGETS = a b c d

all : $(TARGETS)
$(TARGETS) : % : DIR = %
$(TARGETS) : % : %_setup build

a_setup :
 code for a
b_setup :
 code for b
...
build
 code using "DIR = XX" previously configured

但 gnumake 抱怨特定于目标的变量 DIR:

make: *** No rule to make target 'DIR', needed by 'a'

是否可以混合静态模式规则和变量分配?谢谢!


根据 GNU make 手册,你不能那样做。但是,您可以使用$@。在您的示例中,您可以直接分配DIR=$@但更一般地你可以使用$@结合patsubst:

TARGETS = a b c d
all : $(TARGETS)
$(TARGETS) : DIR = $(patsubst %,%,$@)
$(TARGETS) : % : %_setup build
        echo $@: DIR:$(DIR)
%_setup :
        echo $@
build:
        echo $@
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Make:在静态模式规则中设置特定于目标的变量 的相关文章

随机推荐

  • Angular2 @Inputs 应该是公共的还是我们可以/应该通过将它们设为私有来拥有更严格的 API?

    我正在使用 Angular2 和 Typescript 假设我的应用程序组件模板中有以下内容
  • SSIS 正在删除平面文件源导入的记录

    我在 SSIS 2008 中遇到了一个非常奇怪的问题 基本工作流程如下 使用平面文件源 CSV 导入 SSIS 推入 SQL 当进程在开发环境中运行时 一切正常 当 dtsx 包投入生产时 使用完全相同的平面文件源 文件中的最后一条记录被删
  • 如何在 .NET 中使 ComboBox 不可编辑?

    我想要一个 仅选择 ComboBox它提供了一个项目列表供用户选择 应在文本部分禁用打字ComboBox控制 我最初对此进行谷歌搜索 发现了一个过于复杂 误导性的建议来捕捉KeyPress event 要使 ComboBox 的文本部分不可
  • 查询和扫描多行性能缓慢

    下面的查询一行的执行时间为 6 18 分钟 Exception type 1 的基数值为 3 我不知道如何提高性能 Query select count 1 as rage tap from summary funnel 1066 s jo
  • 如何让一段代码只执行一次?

    我有一个应用程序 其中有多种功能 每个函数都可以根据用户输入多次调用 但是 我只需要在函数中执行一小段代码一次 最初是在应用程序启动时执行 当稍后再次调用同一函数时 不得执行这段特定的代码 代码在VC 请告诉我处理这个问题最有效的方法 使用
  • 与 Reflect.StructTag.Get 不兼容

    我当时在 Google Cloud 中工作 一切都很好 但是当我在 PC 中克隆所有项目时 每个 JSON 结构中都有此消息 结构体字段标签bson edad json edad omitempty 与reflect StructTag G
  • Swagger 3.0.0:如果没有 SwaggerConfig 和 @Profile,则无法在生产中禁用

    我正在从 2 x 升级到 SpringFox Swagger 3 0 0 它引入了 Spring Boot 启动器springfox boot starter消除了对基于 2 x 的需要的依赖性SwaggerConfig NO LONGER
  • 检测到 Microsoft.EntityFrameworkCore 错误 NU1107 版本冲突。安装 EF core 时安装/参考

    我安装了 Visual Studio 2017 并创建了一个名为 WebApplication1 的 MVC 项目 在 依赖项 gt NuGet 中 我有这些文件 微软 AspNetCore App 2 2 0 Microsoft AspN
  • 模拟测试方法

    尝试模拟在另一个方法中调用的方法 code part public virtual bool hello string name int age string lastName GetLastName public virtual stri
  • DataFrame 在函数内部修改

    我面临一个我以前从未观察到的函数内数据帧修改的问题 有没有一种方法可以处理这个问题 以便初始数据帧不被修改 def test df df tt np nan return df dff pd DataFrame data 现在 当我打印时d
  • Angular/.NET Web API 项目中的 JsonPatch

    我正在使用 KevinDockx 的JsonPatchVisual Studio 的扩展 我的项目使用 NET Web API 不是核心 和Angular 6 Net Web API不支持JsonPatchDocument命名空间 因此需要
  • 浏览器检查器如何知道图像或其他资源是否属于加载失败的哪个css或js文件?

    我可以在网页中看到一些图像未加载 原因是 css 或 js 文件内的路径错误 但如何知道哪个 js 或 css 文件正在尝试加载该资源 我在浏览器的检查器中尝试了太多方法来找到某种方法 但我无法弄清楚 所以我必须在每个 js 和 css 文
  • 将扁平树解析为非扁平树的算法

    我有以下扁平树 id name parent id is directory 50 app 0 1 31 controllers 50 1 11 application controller rb 31 0 46 models 50 1 1
  • Android接收通知打开和取消事件

    我从 webService 接收数据以生成自定义通知 我想追踪Intent要知道open 点击 或cancel 滑动 通知上的事件 以报告服务器进行分析 有没有听众onIntentStart or onIntentCanceled 也许是通
  • 将 NULL 变量插入数据库

    我将变量设置为 NULL 我试图将其插入数据库 但由于某种原因 它们一直以 0 的形式提交 我确信我试图插入的列允许 NULL 并且默认值设置为 NULL 这是我的代码 insert NULL query mysql query INSER
  • 来源和出口有什么区别?

    我正在编写一个 shell 脚本 以读取具有 key value 对的文件并将这些变量设置为环境变量 但我有疑问 如果我这样做source file txt是否会将该文件中定义的变量设置为环境变量 或者我应该逐行读取文件并使用导出命令设置它
  • Spark MLlib - 训练隐式警告

    我在使用时不断看到这些警告trainImplicit WARN TaskSetManager Stage 246 contains a task of very large size 208 KB The maximum recommend
  • 如何检查目录是否有读/写权限

    我有一个如图所示的目录 d wx x x 2 bcheudev bcheudev 4096 Jun 18 06 16 test 这表明该目录没有读取权限 但是当我通过 shell 脚本检查相同内容时 它给出的结果是 dir test 具有读
  • 如何将变量添加到监视窗口

    Visual Studio 2008 专业版 好的 从 自定义 部分 我将 观察 快速观察 等工具栏命令添加到 调试 菜单中 但我想仔细观察一个变量 我们如何将其添加到手表中 我突出显示它并尝试添加它 但它已被禁用 我希望能够首先向手表添加
  • Make:在静态模式规则中设置特定于目标的变量

    我正在使用静态模式规则编写 Makefile 并且我希望为 TARGETS 的每个元素分配一个变量给当前目标名称 此处为 TARGETS a b c d all TARGETS TARGETS DIR TARGETS setup build