Makefile - 从路径中删除 ../

2024-07-03

我的目标文件的路径可能如下所示:

 '../../src/foo/bar.c'

我希望它们输出到

 'build/src/foo/bar.o'

目前使用:

 COBJS      :=  $(notdir $(CFILES))
 COBJS      :=  $(patsubst %,$(BUILD)%.o,$(COBJS))

我可以实现

 'build/bar.o'

如果任何两个库/项目包含相同的类名,就会出现问题。

所以问题是,如何从 Make 中的路径中删除多个“../”。我尝试过明显而幼稚的方法,但没有结果。

更新,以下内容将完全匹配 ../../ 并将其替换为其余内容。这是完美的,除了它特定于 ../../。只需要让它匹配任意数量的../../

 COBJS      :=  $(CFILES:../../%=%)

Update,

已解决,距离发布我自己的答案仅差三个声誉。

 COBJS      :=  $(subst ../,,$(CFILES))

正如我最初的问题中所发布的,我最终忘记了回答。

此问题以及可能的许多其他 Make 字符串替换的解决方案如下:

COBJS      :=  $(subst ../,,$(CFILES))

'subst' 有 3 个参数。 $toMatch、$replaceWith、$string。

在本例中,$(CFILES) 是要编译的所有 .c 文件的列表。我将“../”替换为空。

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

Makefile - 从路径中删除 ../ 的相关文章

  • MinGW Make 抛出“系统找不到指定的路径。”错误

    我正在尝试在 Windows 7 上使用 cmake 生成一个 c 项目 在实际创建项目之前 cmake 会对您的工具链进行快速测试 我正在使用 MinGW 这就是我的问题所在 Cmake 触发 make 构建 最终失败并返回 系统找不到指
  • 具有两个同名目标的 Makefile

    我有一个包含包含语句的 makefile 我无法控制包含的 makefile 的内容 不过 我希望能够在 某些 不是全部 目标之前添加一些预处理步骤 考虑以下示例 install echo install target include ot
  • 内核makefile中的$(call cmd,tags)这里的cmd指的是什么?

    在内核 Makefile 中我发现如下代码 ctags CTAGS CSCOPE HEADERS SOURCES ETAGS ETAGSFALGS HEADERS SOURCES call cmd ctags 另外 在哪里可以找到宏或函数
  • .ko 文件是如何构建的

    我正在尝试将我自己的驱动程序移植到Beagle 板 xm arm cortex A8 在移植时我试图弄清楚如何 ko文件实际构建 在我们的Makefile我们只有一个命令来构建 o file 怎样是一个 ko文件已建立 使用Linux 2
  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • Makefiles - ar: *.a: 没有这样的文件或目录....但是有...它就在那里

    尝试编译朋友的代码 但他没有包含 Makefile 我构建了自己的代码 并对我遇到的问题感到困惑 我认为最好将 Makefile 的完整内容发布在下面 我尽量保持简短 CFLAGS Wall pedantic LFLAGS CC gcc R
  • 是否可以使用现有的 Makefile 在 Code::Blocks 中构建项目?

    编辑 我发现项目属性中有一个选项可以设置自定义生成文件 现在项目构建良好 现在 我偶然发现了如何在单击 运行 时指定要运行的目标可执行文件 代码 块 http www codeblocks org is an IDE https en wi
  • 错误:-march= 开关的值错误

    我写了一个Makefile 但无法让它工作 我有一个选项应该选择编译到哪个处理器 然而 当我跑步时make从命令行它说 tandex tandex P 6860FX emulators nintendo sdks 3DS SDK HomeB
  • 多个源的 makefile

    在学习 make 文件时 我试图为多个源目录编写一个 make 文件 似乎我在某个地方错了 这是我的代码结构 directory common fun2 c inc fun h src fun1 c main c 这是我的生成文件 CC c
  • ubuntu 中的 echo -e 选项不起作用

    我的同事使用Ubuntu 我使用openSUSE 我们使用相同的makefile编译相同的源代码 我的环境运行良好 但我的同事不能 总是输出无法识别 e选项 我们检查makefile 只发现echo命令使用 e option Ubuntu的
  • 从 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
  • Windows 上 gnu make 的 libintl3 和 libiconv2 在哪里,需要在 MinGW 上用 ruby​​ 编译 vim

    我正在尝试为 Windows 运行 gnu make 但它无法运行 因为libint3 dll没找到 果然 http gnuwin32 sourceforge net packages make htm http gnuwin32 sour
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • 使用 Makefile 项目在 Visual Studio 中自定义调试命令

    我在 Visual Studio 2010 中有一个由 Makefile 支持的项目 实际上使用 NAnt 但这不是重点 构建过程的输出是一个 elf 文件 我有一个单独的非 VStudio 调试器 可以在该 elf 文件上运行来调试它 构
  • 具有此处文档重定向的 Makefile 配方

    有谁知道如何在菜谱上使用此处文档重定向 test sh lt
  • 如何编写Makefile来编译简单的C程序

    编译以下程序 include
  • Makefile - 从路径中删除 ../

    我的目标文件的路径可能如下所示 src foo bar c 我希望它们输出到 build src foo bar o 目前使用 COBJS notdir CFILES COBJS patsubst BUILD o COBJS 我可以实现 b

随机推荐

  • 在 XCode 中调试 - 通过代码和断点运行 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道如何在 xcode 中进行最佳调试 我知道如何设置断点 但理想情况下我希望模拟器停止 然后单步执行代码 不是单步执行断点 而是
  • Android - 原生层VPN

    只是一个简单的问题 因为谷歌并没有提出太多问题 是否可以使用本机代码创建 VPN 连接 安卓 如果是的话 VPN 是否提供保活支持 我认为这更多的是权限问题 而不是暴露或未暴露的问题 大多数 VPN 连接需要您修改和访问内核的网络过滤调用
  • TRUE 的数值相当于 -1?

    我正在 Visual Studio 2012 中使用 Intel Fortran 来编译 Fortran 代码 当我尝试使用逻辑运算符时 我注意到独立的逻辑表达式会按预期产生 T 或 F 但是 如果我需要数字 T 或 F 0 或 1 当逻辑
  • SCNAudioPlayer 正在抛出 -10878

    我开始在 SceneKit 应用程序中播放这样的音频文件 它正在令人惊讶地播放文件 我可以调用第一个函数来重新开始播放 但在第一次调用启动播放器时 我多次收到此消息 我找不到原因 测试场景 17737 968214 投掷 10878 var
  • 如何通过通知和锁屏控制服务中的音乐播放

    请向我展示从通知和锁定屏幕控制媒体播放器 从服务器流式传输 mp3 的代码 我知道这很简单 但我不知道从哪里开始 我其实不知道更多mediaController mediaSessionCompat and NotifacationComp
  • 报告服务可用性 SQL Server Express 2008 R2

    我正在尝试将 Reporting Services 添加到已安装的 SQL Server Express 2008 R2 版本中 我将其安装在 Windows Server 2008 R2 标准版盒子上 当我运行安装程序来添加额外功能时 报
  • Vue.js - 如何从另一个组件调用方法

    我正在使用 Vue Js v2 我想在component2 gt c2method中调用component1 gt c1method来在提交后重新加载数据 Vue component component1 methods c1method
  • 如何检测字典中的任何元素是否发生变化?

    而不是保存重复的字典并比较新旧 就像这样 dict apple 10 pear 20 if dict old dict do something dict old dict 如何检测字典中任何元素何时发生变化 你可以子类化dict并包括一些
  • 使用 lodash 从字符串数组中查找子字符串

    我正在学习洛达什 是否可以使用 lodash 在字符串数组中查找子字符串 var myArray I like oranges and apples I hate banana and grapes I find mango ok anot
  • C++ - 将基类指针转换为派生类指针

    include
  • 将 YUP 与 Material-UI TextField 结合使用

    我正在尝试将表单转换为使用 Material ui TextField 我如何让我的 YUP 验证与之配合使用 这是我的代码 import as React from react import useState from react imp
  • 如何更改s3存储桶中对象的存储类别?

    我需要使用 s3cmd 将 s3 对象的存储类从 STANDARD 类更改为 STANDARD IA 任何人都可以帮助我完成这项任务 提前致谢 如果要更改存储桶中所有对象的存储类别 请使用 aws s3 cp s3
  • 将 Json 转换为 Map[String, String]

    我有输入 json 像 a x b y c z 我想将此 json 转换为像 Map String String 这样的 Map 所以基本上是键值对的映射 我该如何使用 circe 来做到这一点 请注意 我不知道 Json 中将出现什么键
  • 当文本在另一次自动完成后突出显示时,VSCode 不会自动完成

    在 Visual Studio 代码上编辑文本时 当我使用自动完成功能时 如图所示 https i stack imgur com 0WKnm png https i stack imgur com 0WKnm png 它突出显示我的文本
  • 如何将包含位图的对象传递给另一个活动

    所以我是 Android 开发的新手 我试图制作一个注册活动 UserPrivateInfoSignUpActivity java 加载图片 位图 并创建UserPersona我想传递到另一个活动的对象 UserGeneralDataSig
  • 有记录表明 Cargo 可以下载并捆绑同一个 crate 的多个版本吗?

    通过分叉和使用一些代码 我注意到 Cargo 可以在同一项目中下载并捆绑同一板条箱的多个版本 例如 native tls 0 1 5 和 0 2 1 我因为查看错误版本的文档而浪费了很多时间 我查找了有关此行为的一些信息 但没有找到任何信息
  • Sharepoint 2013 REST API 未返回列表的所有项目

    标题非常准确地说明了我的问题 如果我尝试使用 sharepoint 的 REST API 从列表中收集所有 400 多个项目 我只能得到前 100 个 我读过了http msdn microsoft com en us library of
  • Tooltipster 在生成的内容中不起作用

    我已经安装了 Tooltipster我的网站 http heroplaysonline com 但它不适用于动态添加的内容 您可以在 按您的选择排序游戏 默认为最新游戏 框中看到它 当我选择按 最新优先 最受欢迎 等排序时 生成内容时 To
  • 被杀死的进程/线程会释放互斥锁吗?

    多个进程访问共享内存 并使用互斥体锁定它pthread mutex lock 为了同步 每个进程都可以随时被杀死 事实上我描述过php fpm with APC扩展 但这并不重要 如果进程锁定互斥锁然后被杀死 互斥锁会自动解锁吗 或者有什么
  • Makefile - 从路径中删除 ../

    我的目标文件的路径可能如下所示 src foo bar c 我希望它们输出到 build src foo bar o 目前使用 COBJS notdir CFILES COBJS patsubst BUILD o COBJS 我可以实现 b