- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个设置,我想用 make 处理的文件依赖于另一个程序的输出。构建程序及其所有先决条件 这也是一项复杂的任务,所以我也想为此使用 make 。现在我的问题是,似乎无法在 Makefile 配方中生成规则和先决条件。考虑以下代码:
bar:
echo target1 target2 target3 > bar
foo: bar
$(eval BAR := $(shell cat bar))
define FUN
$(1):
touch a$(1)
endef
ifdef BAR
$(foreach i,$BAR,$(eval $(call FUN,$(i))))
endif
blub: foo $(BAR)
我用 bar
配方替换了一大组复杂的配方,这些配方最终生成了我想要的文件列表。实际上,生成 bar
的内容非常复杂,应该通过一组 Makefile 配方来完成,而不能仅通过(如上所示):
BAR:=$(shell echo target1 target2 target3)
我想将 foreach
循环放入 foo
的配方中,但是由于 prerequisites cannot be defined in recipes
而失败,这是有道理的并且在 function define in makefile 中也有解释
但似乎当我做 make blub
时,当 foo
eval 的 BAR
为不同的值时,blub
不会重新计算。
所以我认为最终我要寻找两件事:
我如何在运行时根据(并依赖于)另一个配方(在本例中为 bar
)输出的内容动态生成配方?
我如何在运行时根据(并依赖于)另一个配方(bar
)动态更新目标(在本例中为 blub
)的先决条件> 在这种情况下)输出?
谢谢!
编辑:解决方案
在@user657267 的帮助下,以下似乎解决了我的问题:
.PHONY: all
all: blub
-include bar.make
.PHONY: blub
blub: $(BAR)
echo $^
bar.make: Makefile
printf 'BAR=target1 target2 target3\n' > $@
printf 'target1 target2 target3:\n' >>$@
printf '\ttouch $$@' >> $@
.PHONY: clean
clean:
rm -f target1 target2 target3 bar.make
最佳答案
听起来你应该使用 make 的 self 改造功能
-include bar.make
blub: $(BAR)
@echo $^
bar.make:
@echo BAR := target1 target2 target3 > $@
@echo target1 target2 target3: ; touch $$@ >> $@
显然 bar.make
的配方是人为设计的,在现实世界中,它们可能会调用某种输出有效 makefile 的脚本。
关于Makefile:在配方中定义规则和先决条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39188323/
我正在尝试实现 https://github.com/PHP-FFMpeg/PHP-FFMpeg 我将 src/FFMpeg 文件夹复制到我的包含文件夹中,并确保我的自动加载器知道在哪里可以找到所有内
我正在使用 VS 2010。我的应用程序是 ClickOnce 部署的。我的三个先决条件是 CR 2010 和 .NET 4.0。 当我运行 ClickOnce 时,首先运行 CR 2010 先决条件
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
我想知道在编写 JQuery 或解析 JSON 时需要附加哪些必要的文件作为脚本。在一些示例中,我看到开发人员引用:jquery-1.3.2.min.js,有些则使用 jquery.min.js。对于
如果我理解正确的话,ClickOnce 仅通过包含先决条件信息的 setup.exe 文件在首次安装应用程序时检查先决条件。如果用户将来打开该应用程序,它将检查新版本,但不会再次启动 setup.ex
是否可以在 YAML 中使用前提条件我没有找到除此页面之外的任何来源 http://www.liquibase.org/documentation/yaml_format.html 但我正在寻找相当于
我有一些组件MSI软件包,需要一起安装才能形成最终应用程序。 问题是:组成软件包的组件可以被更新,并且该组件可以在http文件服务器上重新启动。我应该采取什么方法? 我正在编写的安装程序是“主”安装程
目标:给定一个没有安装 python 的 Debian 服务器(以及其他一些缺少 ansible 先决条件),使用 ansible 来安装它们,这样我就可以使用普通的 ansible 模块(几乎所有模
我将 .NET Framework 4 作为先决条件添加到我的安装包中。安装此包时,错误报告说安装 .NET 4 需要 WIC“windows 镜像组件”,我也将其添加为先决条件。 但是由于已经安装了
我想检查基类的前提条件,以便我知道子类型将始终使用有效的构造函数参数。 让我们以一个构造函数为例: 接受 2 个或更多参数 接受不同类型的参数 对于一个参数,它执行多项检查(例如,字符串不为空并且不为
我尝试构建 a Perl distribution for a home-made module , 来自 Module::Starter根据。每个测试都在我的机器上通过,但当我将其上传到 CPAN
我通过导入 VS2010 安装部署项目(使用集成向导)在 VS2013 中创建了 InstallShield 安装项目。当我尝试编译它时,它说: ISEXP : error : -7067: Your
我正在使用 Wix,并且我有针对 Dotnet 4.0 以 .net 编写的自定义操作。安装过程中,welcome dlg 后,会在系统中检查 dotnet 框架,如果不存在,则会显示 dotnetf
我正在处理上述大学数据库,想知道如何强制执行先决条件表。我有它,所以每个 crs_code 都有一个与 crs_requires 相关的先决条件。但是,我需要想出一种方法,以便当学生去上课时,它会检查
我用 C#、.NET Framework 2.0 编写了一个 Windows 窗体应用程序,它使用 System.Data.OleDb 与 SQL Server 2000 数据库对话,该数据库运行良好
python 是否有任何等效于 java 的先决条件库。例如 在java中,你可以这样检查参数: public void dummymethod(Cat a, Dog b) { Precondi
我有一个 WiX 安装程序,我想检查 .Net 3.5,如果它不存在,请安装它。我的 wixproj 文件中有以下几行: .NET Framework 3.5 WIndows I
当我的 Wix 包尚未安装在客户端的机器上时,如何让我的 Wix 包下载所需的 .NET Framework?我已经有条件检查已安装的 .NET 版本,但我不确定如何在未找到时下载和安装它。 Clic
我有这样的工作: target1.PREREQUISITES = file11 file12 file13 target2.PREREQUISITES = file21 file22 file23 $
编辑: 经过更多搜索后,我找到了完成此操作的方法。我用了This preview page改变我的 Product.xml然后我复制了一些现有的 Product.xml 以检查它是否已经安装。 因此,
我是一名优秀的程序员,十分优秀!