如何在 make 模式规则的依赖项中使用模式相关变量

2023-12-27

我想使用模式相关变量中的依赖项来定义 GNU make 模式规则。我想要的是这样的:

%.exe : $(%_EXE_SOURCES) $(%_EXE_RESOURCES)
    $(CSC_V)$(CSC) $(CSCFLAGS) $($*_EXE_CSCFLAGS) -target:exe \
            -out:$@ $($*_EXE_SOURCES) $($*_EXE_RESOURCES)

稍后定义类似的东西

FOO_EXE_SOURCES = src/Foo.cs
all: Foo.exe

该规则提出了要建造的工程;在规则正文中$($*_EXE_SOURCES)变量扩展为$(FOO_EXE_SOURCES),扩展到src/Foo.cs。然而,依赖关系不能正确扩展;更改 src/Foo.cs 不会导致 Foo.exe 被重建。

我怀疑这实际上不能在 make 中完成,但也许有人有一个类似工作的 make 片段?


您可以使用“二次扩展”。像这样的事情应该可以实现您正在寻找的内容:

Foo_EXE_SOURCES := foo.cs bar.cs baz.cs
all: Foo.exe

.SECONDEXPANSION:
%.exe: $$($$*_EXE_SOURCES)
    $(CSC_V)$(CSC) $(CSCFLAGS) $($*_EXE_CSCFLAGS) -target:exe \
            -out:$@ $($*_EXE_SOURCES) $($*_EXE_RESOURCES)

启用二次扩展允许使用自动变量(即$*在这种情况下)在先决条件列表中,否则会出现这样的情况not work.

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

如何在 make 模式规则的依赖项中使用模式相关变量 的相关文章

  • mingw32-make 的目录更改错误

    我正在MinGW32下构建POCO库1 6 0 环境 Windows 7 Ultimate 32位 shell MSYS 执行成功 配置 configure Configured for MinGW config make的内容 POCO
  • 检查 makefile 中的文件大小,如果文件太短则停止

    有没有办法检查特定文件的大小是否小于某个常量 我在 makefile 中假设有关大小的事情 并希望确保如果不满足我的假设 我会收到错误 类似于断言 但在 makefile 中 if filesize file gt C then error
  • 是否可以将 CFLAGS 设置为 Linux 内核模块 Makefile?

    例如 常见设备模块的Makefile obj m jc o default MAKE C lib modules shell uname r build M shell pwd modules clean MAKE C lib module
  • /usr/sbin/install 到底有什么作用?

    我正在尝试安装discount https github com Orc discount on my VPS http no de它基于Solaris 设置一些环境变量后编译效果很好 但是安装失败 https gist github co
  • 构建 gradle 系统应用程序作为 AOSP 构建的一部分

    我有一个基于 AOSP 的自定义 ROM 并且正在开发一个系统应用程序 该应用程序在 ROM 构建期间打包 就像任何其他系统应用程序一样 是否可以将此应用程序切换为 gradle 样式应用程序 并在 AOSP 构建期间使用 gradle 构
  • 从 Makefile 中的 C++FLAGS 中删除一个标志?

    我有一个 Makefile 其中包含另一个设置了很多默认值的 makefile 我无法编辑包含的 makefile 并且我想更改 makefile 中 C FLAGS 的值 即使它是在包含的 makefile 中设置的 具体来说 每当 de
  • 在 gnu make 中使用一个命令从多个文件生成多个文件

    假设目录输入中有 1000 个扩展名为 xhtml 的文件 并且这些文件的某个子集 例如 FILES 中的输出路径 需要通过 xslt 转换为目录输出中具有相同名称的文件 一个简单的 make 规则是 FILES output xhtml
  • 什么是“制定目标”?

    为什么我需要制作一个make target在能够构建我的源代码之前 更具体地说 什么是制定目标 http publib boulder ibm com infocenter rsdvhelp v6r0m1 index jsp topic o
  • 避免重复 GNU Make 规则

    我一直在编写一个执行一些依赖项生成的 Makefile 我发现自己必须重复规则 因为 遗留 代码库包含以下内容的混合 cpp and cc文件 好像有点难看 无论如何 是否可以指定目标的先决条件可以是 cpp or cc files 所以而
  • 为什么总是./configure;制作;进行安装;作为 3 个单独的步骤?

    每次从源代码编译某些内容时 都会经历相同的 3 个步骤 configure make make install 我明白 将安装过程分为不同的步骤是有意义的 但我不明白 为什么这个星球上的每个编码员都必须一次又一次地编写相同的三个命令才能完成
  • Makefile:对子目录中的所有文件进行操作?

    我正在使用 Makefile 和 GNU make 基于源 Markdown 文件创建各种文档输出目标 这包括使用latex or pdflatex创建 DVI 文件 使用 EPS 或 PS 格式以外的图像会导致错误 我可以在源 Markd
  • 使用 .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
  • 内核makefile中的$(call cmd,tags)这里的cmd指的是什么?

    在内核 Makefile 中我发现如下代码 ctags CTAGS CSCOPE HEADERS SOURCES ETAGS ETAGSFALGS HEADERS SOURCES call cmd ctags 另外 在哪里可以找到宏或函数
  • 如何在 makefile 中拥有正确的 .mod 顺序

    我正在尝试用 Fortran 为我的项目创建一个 Makefile 并使其可在现在的项目中重用 我经过多次尝试后得出的 Mkefile 如下 问题是它在少数情况下工作正常 但现在我有这个文件 main f90 初始 f90 参数 f90 函
  • makefile 使用目标中定义的变量[重复]

    这个问题在这里已经有答案了 如何使用 make 目标中定义的变量 PHONY foo VAR GLOBAL shell cat tmp global foo echo local gt tmp local VAR LOCAL shell c
  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • 描述 makefile 中的头文件位置

    在我正在开发的一个新项目中 我有以下目录结构 Project base src bin h Makefile 在我的源文件中 我包含如下内容 include h SomeHeaderFile h 而不是更正确的形式 include Some
  • make:无需为“all”执行任何操作

    我正在通过一个eg pgm 来创建一个make 文件 http mrbook org tutorials make http mrbook org tutorials make 我的文件夹eg make creation包含以下文件 des
  • 如何复制Makefile中的目录?

    我有一个目录images 我想复制到build images 从 Makefile 中 该目录可能包含多个级别的子目录 最优雅的方法是什么 我想 避免每个目录都复制完整的目录make运行 即不cp r 保证一致性 即如果文件在images

随机推荐

  • Angular 2 的 JQuery .param() 方法?

    有没有这样的事情 param http api jquery com jquery param Angular2 的 JQuery 函数 我知道 Angular 1 特别有类似的服务 Angular1 等效项 https docs angu
  • 输出非空终止的字符数组行为?

    char sentence k k k k k k k k 8 character std cout lt lt sentence lt lt std endl 然后输出就是kkkkkkkk 但是如果我们递减数组的字符 即前面的数组在少于
  • 用于生成锁定文件的 CocoaPods 版本 (1.5.3) 高于当前可执行文件的版本 (1.5.2)

    on pod install它发出警告并失败 用于生成锁定文件的 CocoaPods 版本 1 5 3 高于当前可执行文件的版本 1 5 2 https github com pawarvijay pod install error blo
  • 为什么 C++ 中需要析构函数?

    当指针超出范围时 它的内存被释放 那么为什么destructor是用c 创建的吗 如果您问为什么 C 类有析构函数 有些类除了释放内存之外还有其他要求 例如 您可能有一个分配了套接字连接的对象 需要彻底关闭该连接 另外 取消范围 指针确实n
  • 在Java中,是否有更优雅的方法来从字符串的ArrayList中删除重复的字符串?

    所以 长话短说 我有一个 Java 家庭作业 需要以各种方式操作一个很长的字符串 ArrayList 我们正在做一些事情 比如显示单词组合 在 ArrayList 中添加和删除 没什么特别的 我注意到提供的一些 ArrayList 具有重复
  • ActionScript - 确定值是否为类常量

    如果某个特定函数在没有传递值的情况下无法工作 并且该值恰好是包含该函数的类的公共常量 我想抛出参数错误 无论如何 有没有办法确定一个类是否拥有一个公共常量 而不必遍历所有常量 像这样的东西 public static const HALIF
  • 如何从 EXC_BAD_ACCESS 中恢复?

    我是故意造成的EXC BAD ACCESS 通过触发写入NSObject在只读虚拟内存页中 理想情况下 我想抓住EXC BAD ACCESS 将虚拟内存页标记为可读写 并像平常一样继续执行 这可能吗 我编写的代码导致EXC BAD ACCE
  • 布局中定义的 Android EditText onClick Listener 失败并出现模糊异常

    我想在可能的活动的 Layout XML 中为 EditText 定义一个 onClick 侦听器 但它总是失败并出现一个模糊的异常 布局中注入了setContentView in the onCreate 我的活动方法 我是not在这里使
  • 如何从TinyDB中删除记录或文档

    如何从TinyDB中删除记录或文档 数据库示例 1 id key xxx params 2 id key yyy params 我想删除 1 if id key xxx 在 TinyDB 教程中建议使用以下代码 如何完成删除记录 文档 db
  • 应用内购买可以防止软件盗版吗

    我意识到如果开发者在 Google Android Market 中发布付费应用程序 很快 付费应用程序将通过其他 Android Market 免费分发 当谈到中国市场时 盗版问题尤其严重 例如 我的水在哪里 中文 http www wa
  • 当指定 return 时,location 块中的 auth_basic 不起作用?

    我认为这会起作用 但由于某种原因它会跳过 auth basic 并始终返回 200 如果我将 200 替换为 301 重定向 也会发生同样的情况 如果我注释掉返回语句 它就可以正常工作 理想情况下我想要一个 auth一旦通过身份验证 端点就
  • C 中带有 pthread 的线程中的计时器?

    在线程中 我需要定期以不同的时间间隔做一些工作 什么是一个好的方法来做到这一点 使用 sleep 然后我需要跟踪下一次唤醒的间隔 这似乎不是最好的方法 thanks 您可以使用clock nanosleep与TIMER ABSTIME标记为
  • 如何从密钥库导出 .key 和 .crt

    当我在开发机器上构建 Android 应用程序时 我需要为应用程序提供 SSL 证书 因此我使用 Tomcat 的 keytool 生成了一个密钥库 我从密钥库中提取了证书并将其放入 bks 中以使用 android 一切顺利 现在我们必须
  • Chrome 中高度 100%

    我的一侧有问题divChrome 中的高度不会达到 100 在FF中效果很好 我在用着 html body padding 0px width 100 height 100 div min height 100 这是为什么 这对我来说在每个
  • 确认回发 OnClientClick 按钮 ASP.NET

  • 使用 Graph FQL 获取朋友当前位置的纬度/经度

    我正在尝试使用单个 API 调用来获取用户所有朋友的纬度 经度 我相信我需要编写一个多查询 FQL 语句 但我无法获得正确的语法 我相信这两个查询需要类似于以下内容 friends SELECT uid current location F
  • 检测 Swift 应用程序是否正在从 Xcode 运行

    我想以编程方式确定 iOS 应用程序是否直接从 XCode 运行 在模拟器中或在连接设备上 我已经尝试过所述的 D DEBUG 解决方案here https stackoverflow com a 30013587 630657 但是当我断
  • ARKit节点100m后消失

    我目前正在开发 ARKit SceneKit 应用程序 我注意到如果我把一个节点放在100m 节点将显示得很好 但如果我将其设置为101m或更远 它不会显示 这是距离限制吗 var translation matrix identity f
  • OpenJDK 和 com.sun.net

    我正在考虑在 com sun net 包中使用 HttpsConfigurator HttpsServer 和 HttpContext 此外 我的项目要求的一部分是使用 OpenJDK 我在 Eclipse 中编码 它不会自动从 com s
  • 如何在 make 模式规则的依赖项中使用模式相关变量

    我想使用模式相关变量中的依赖项来定义 GNU make 模式规则 我想要的是这样的 exe EXE SOURCES EXE RESOURCES CSC V CSC CSCFLAGS EXE CSCFLAGS target exe out E