迭代 Makefile 中的目录列表

2024-02-27

我想在多个目录中执行任务,但到目前为止还没有找到“类似 makefile”的解决方案。我知道这是一个经常被问到的问题,并且我知道如何解决子 makfiles 等问题,但我正在寻找更简单的东西。

而不是做

copy: 
     cd module1 && mkdir foo
     cd module2 && mkdir foo
     cd module3 && mkdir foo

我想要有类似的东西

directories = module1 module2 module3

copy: $(directories)
     cd $< && mkdir foo

但这不起作用,因为该配方仅在第一个目录中调用一次。我想出了这个解决方案,它可以工作,但可能不符合 Makefile 的风格:

directories = module1 module2 module3

copy: 
     for d in $(directories); do cd $$d && mkdir foo && cd ..; done

我怎样才能做得更好?


有很多方法可以做到这一点。

您可以按照 Andrew 的建议进行操作,而无需对前缀进行硬编码:

directories = module1 module2 module2

%/foo: ; mkdir -p -- "$@"

copy: $(addsuffix /foo,$(directories))

这使

$ make -n copy
mkdir -p -- "module1/foo"
mkdir -p -- "module2/foo"
mkdir -p -- "module3/foo"

您还可以生成copymakefile 中的目标:

directories = module1 module2 module2

define copy-target
  copy:: ; cd $1 && mkdir foo
endef

$(foreach dir,$(directories),$(eval $(call copy-target,$(dir))))

这给出:

$ make -n copy
cd module1 && mkdir foo
cd module2 && mkdir foo
cd module3 && mkdir foo

您还可以生成命令,而不是目标:

directories = module1 module2 module2

copy: ; $(foreach dir,$(directories),(cd $(dir) && mkdir foo) &&) :

这导致

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

迭代 Makefile 中的目录列表 的相关文章

  • makefile 中的路径不起作用

    我正在运行以下命令makefile哪些需要改变dir到特定目标并在那里运行npm install 问题是我能够在输出中看到它将目录 项目 应用程序 打印到正确的目录 但安装 npm install 在上层 项目 上运行 为什么 例如 当我运
  • bash:PWD 和 CURDIR 有什么区别?

    我的问题 我使用 Makefile 来运行docker runtarget 需要当前工作目录作为其参数之一 我使用任一 PWD or CURDIR build Dockerfile docker run lt PWD or CURDIR g
  • 将文件夹中结构化的预构建文件集添加到 android out 文件夹

    我为arm编译了glibc 这与Android glibc或bionic C不同 因为我编译的glibc环境将有助于提供更多api 现在我可以在 Android 运行时将 glibc 环境复制到 system 文件夹中 并且在执行 chro
  • Ruby 有 mkdir -p 吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 ruby 中递归创建目录 https stackoverflow com questions 3686032 how to create directories recursively in
  • 编辑 CMakeLists.txt 以使用 -fPIC 进行编译

    我正在尝试为名为 libnifalcon 的 NOVINT Falcon 安装驱动程序 我使用 cmake 创建 make 文件 但是当我运行 make 时出现错误 Linking CXX shared library lib libnif
  • 如何在 makefile 中针对特定目标使用 include 指令

    我只想将 include 指令用于特定目标 当不需要目标时 我不想运行其他 makefile 因为这意味着 makefile 是不必要生成的 那么有没有一种方法可以有条件地使用 include 指令 该指令以目标为条件 或者以某种方式使 i
  • 将项目子文件夹中的文件放入输出目录

    我想在 C 项目中创建一个文件夹来包含一些配置文件 但是 我不希望将这些文件复制到bin Release MyFolder 我宁愿将它们复制到bin Release直接地 我认为这可以通过拥有一个 虚拟 文件夹 例如解决方案文件夹 来实现
  • 如何将空目录添加到 Git 存储库?

    如何将空目录 不包含文件 添加到 Git 存储库 使目录 在存储库中 保持 几乎 空的另一种方法是创建一个 gitignore该目录中的文件包含以下四行 Ignore everything in this directory Except
  • Windows 终端中的图标和背景图像字段无法识别父进程目录

    Windows 终端版本 1 12 10732 0 Windows 内部版本号 19043 1645 Issue 如果这个问题已经在其他地方得到解决 请原谅我 但我意识到当Use parent process directory被检查 Co
  • 如果覆盖率低于一定百分比,则单元测试失败

    我制作了一个执行的 makefilego test cover 是否有可能失败make unit tests如果覆盖范围低于 X 则命令 我该怎么做呢 您可以使用TestMain在你的测试中做到这一点 TestMain 可以充当测试的自定义
  • Cmake 链接到共享库找不到​​库

    在 Ubuntu 上 我有两个目录 build and src In src my CMakeLists txt文件有以下几行 add executable Test main cpp target link libraries Test
  • 使用 GNU make “从源代码树中”构建 C 程序

    我想使用 GNU make 工具为我的微控制器构建一个 C 项目 我想以一种干净的方式来做这件事 这样我的源代码在构建后就不会被目标文件和其他东西弄乱 想象一下我有一个名为 myProject 的项目文件夹 其中有两个文件夹 myProje
  • 当您更新 iOS 应用程序时,文档文件夹内容会发生什么变化?

    当我更新在 文档 文件夹中存储了一些文件的应用程序时 会发生什么情况 我需要将这些文件保存在该文件夹中 以便更新的应用程序能够使用它们 但这似乎并没有发生 我可以设法保存所有文件吗 您的文档将保留在原处 除非用户在更新之前删除应用程序 但这
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • 如何重命名 GitHub 网站上的目录/文件夹?

    我在 GitHub 网站上找到了一种方法rename https github com blog 1436 moving and renaming files on github一个文件并成功完成 我也找到了一种方法rename https
  • 使用 AutoHotkey 读取目录中的文件名

    我正在寻找一种读取文件夹并将每个文件名保存到变量的方法 到目前为止 这就是我所拥有的 Loop C My Documents Notes 在我的笔记目录中 有 pdf 文件 我想读取该目录并将文件名 Homework1 pdf 保存到变量中
  • ZipArchives 存储绝对路径

    我可以使用相对路径压缩文件吗 例如 zip gt addFile c wamp www foo file txt ZIP 应该具有如下目录结构 foo gt file txt and not wamp gt www gt foo gt fi
  • 避免重复 GNU Make 规则

    我一直在编写一个执行一些依赖项生成的 Makefile 我发现自己必须重复规则 因为 遗留 代码库包含以下内容的混合 cpp and cc文件 好像有点难看 无论如何 是否可以指定目标的先决条件可以是 cpp or cc files 所以而
  • MinGW Make 抛出“系统找不到指定的路径。”错误

    我正在尝试在 Windows 7 上使用 cmake 生成一个 c 项目 在实际创建项目之前 cmake 会对您的工具链进行快速测试 我正在使用 MinGW 这就是我的问题所在 Cmake 触发 make 构建 最终失败并返回 系统找不到指
  • 将文件夹中的所有文件及其所有子文件夹移动到一个大文件夹中 - windows xp

    我有一个文件夹 c downloads ffme 里面有很多子文件夹 每个子文件夹中都有不同数量的文件 我想将所有这些单独的文件合并到一个大文件夹中 同时将它们从子文件夹中删除 我希望最终得到一个包含大量文件的文件夹 但没有子文件夹 我怎样

随机推荐

  • 为什么 Python 的 lambda 表达式中不允许赋值?

    这不是重复的Python 中 lambda 表达式内的赋值 https stackoverflow com questions 6282042 assignment inside lambda expression in python 即我
  • 如何在 JavaFX2 中的任务之间重置进度指示器?

    我的主屏幕 UI 上有一个进度指示器 由各种选项卡和服务共享 每个 TabController 都有自己的 Service 实例 在我的 MainController 类中 对于每个选项卡 我已将每个服务的进度属性绑定到 ProgressI
  • 通过 Kivy 在 Android 上运行 Tensorflow

    I found 这个答案 https stackoverflow com a 34495029 828184这让我想到了一个想法 你可以在 Android 手机上使用 kivy 而不是使用编译后的张量流图 这样你就可以使用直接与张量流图对话
  • 将数组中的相同值分组

    我有一个数组 里面有一些值 我希望返回另一个数组 该数组的值分组到自己的数组中 所以我想要达到的结果是这样的 var arr 1 1 2 2 2 3 3 4 4 4 4 5 6 var groupedArr 1 1 2 2 2 3 3 4
  • Xamarin.Android 中的测试活动

    我想对活动生命周期的一些交互进行单元测试 我正在开发一个数据绑定库 没有它就无法进行单元测试 安卓也有一些不错的文档 http developer android com tools testing activity testing htm
  • “代码生成器已取消优化 [某些文件] 的样式,因为它超过了最大值“100KB””是什么意思?

    我向我的项目添加了一个新的 npm 包 并在我的一个模块中需要它 现在我从 webpack 收到这条消息 build modulesNote The code generator has deoptimised the styling of
  • SSRS 选择性分页符

    我正在处理的有关财产记录的当前报告在 SSRS 中遇到一些格式问题 我的报告由 6 个在横向视图中对齐的 tablixes 构建而成 旨在保留特定的布局以供潜在的报告打印 第一个 Tablix 包含有关相关财产和所有者的一般信息 该信息将是
  • 如何以编程方式选择 MKUserLocation?

    标题和副标题可以添加到 iOS 显示的用户位置MK用户位置 https stackoverflow com questions 6400880 on mkuserlocation how do i show my own custom me
  • 如何重置向南迁移以捕获 django 模型的当前状态

    我有一个应用程序 目前有 35 次向南迁移 在设置新部署时 我们经常创建新部署 这些需要一段时间才能完成 并且应用程序正在不断发展 添加更多迁移 此外 迁移还包括一些潜在的复杂数据迁移和一些破坏 SQLite3 的自定义迁移 目前这不是一个
  • 像 Instagram 一样带有圆角的文本背景

    我想像 Instagram 一样创建具有背景颜色和圆角的文本 我能够实现背景颜色 但无法创建圆角 到目前为止我所拥有的 下面是上面截图的源代码 void createBackgroundColor self txtView layoutMa
  • CoffeeScript - 编译当前目录和所有子目录中的所有 .coffee 文件

    编译当前目录和所有子目录中的所有 coffee 文件的最简单方法是什么 您可以使用集成的coffee外壳工具 coffee output lib compile src 编译 coffee 文件的目录树src到 js 文件的并行树中lib
  • CMake 行为:使用 Visual Studio 的自定义配置类型需要多次运行 cmake 才能正确显示。这是故意的吗?

    Context 我正在将一个项目从普通 Makefile 迁移到 CMake 以添加对多个编译器 gfortran ifort 和操作系统 Windows Linux 的支持 当我完成整个事情时 我正在尝试简化 CMake 行为并为用户提供
  • 在 data.table 中插入一行

    如果我有一个数据框 set seed 12345 df data frame a rnorm 5 b rnorm 5 我可以通过例如添加一行 df 6 c 5 6 如果我现在在 data table 中执行相同的操作 library dat
  • Google Developers Console API 页面未加载

    在我的 Google 开发者控制台中 我无法打开 API 页面 它显示无法加载错误 并且如果我通过像 https cloud google com compute docs autoscaler loadbalancingsetup htt
  • grep 是如何工作的?

    我想了解如何grep works 当我说grep hello does grep获取 2 个参数 1 要搜索的字符串 即 hello 和 2 路径 或者shell是否转换 变成某事grep可以理解 哪里可以得到源代码grep 我遇到了这个G
  • 在 numpy 数组上“绘制”随机菱形(菱形)(测试哈里斯角点检测)

    我正在尝试为 harris corner detector 函数实现创建一个随机测试 非常普遍且轻微错误 一个在图像中查找角点的函数 在测试中 我想在二进制 numpy 矩阵中创建随机简单形状 很容易知道它们角的坐标 例如矩形 三角形 菱形
  • 交换行 csr_matrix scipy

    我在 scipy 中有一个 256x256 csr matrix 并且有一个我想要应用的新行顺序的列表 我试过这个 def HblockDiag z Hz H z H z returns a 256x256 csr matrix Hz in
  • Jinja,模板渲染后获取一行源代码

    是否可以获取渲染模板的每一行的源代码行 例如 如果我们有如下所示的模板 some expr if true other expr endif 因此 模板渲染后会生成以下文本 some expr other expr 我想获取 some ex
  • 将模拟注入 Spring MockMvc WebApplicationContext

    我正在努力使用 Spring boot 测试 通过 JUnit4 和 Spring MockMvc REST 服务适配器 适配器只是将向其发出的请求传递给另一个 REST 服务 使用自定义RestTemplate 并将附加数据附加到响应中
  • 迭代 Makefile 中的目录列表

    我想在多个目录中执行任务 但到目前为止还没有找到 类似 makefile 的解决方案 我知道这是一个经常被问到的问题 并且我知道如何解决子 makfiles 等问题 但我正在寻找更简单的东西 而不是做 copy cd module1 mkd