GNU make 产生“命令在第一个目标之前开始”错误

2023-12-25

在我的 makefile 中,我想检查库是否存在并给出信息丰富的错误消息。我创建了一个条件,当找不到文件时应该退出 make 进程:

 9: ifeq ($(${JSONLIBPATH}),)
10:    JSONLIBPATH = ${ALTJSONLIBDIR}/${LIBJSON}
11: endif
12: ifeq ($(${JSONLIBPATH}),)
13:    $(error JSON library is not found. Please install libjson before building)
14: endif 

我的 makefile 卡在第 13 行:

Makefile:13: *** commands commence before first target.  Stop.

第 13 行之后,我的 makefile 有了它的目标。

我尝试将此条件块放入目标中(例如,名为isJSONLibraryInstalled)但这不能正确执行。

在处理目标之前,如何检查文件是否存在并处理错误情况?如果这是一个愚蠢的问题,我深表歉意。


首先,您正在查看以当前路径命名的变量的内容,这可能不是您想要的。一个简单的环境变量引用是$(name) or ${name}, not $(${name})。因此,始终会评估第 13 行。

其次,我认为它的缩进令人窒息$(error ...)表达。虽然表达式解析为空字符串,但行的开头仍然有一个制表符,它表示命令,而命令又不能存在于规则之外。

我认为使用空格而不是制表符来缩进会有效。

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

GNU make 产生“命令在第一个目标之前开始”错误 的相关文章

随机推荐

  • .net 中的事件签名模式

    net 中事件委托的标准模式有什么意义 IE EventHandler 预定义委托 为什么不直接选择最适合需求的签名呢 编辑 此外 是否有必要在所有情况下都盲目追随微软的榜样 在 C 1 0 中 该约定没有多大意义 在 C 2 0 中 存在
  • 如何在 Google Colab 中交互式绘制 matplotlib 绘图?

    我正在使用 Python 和 matplotlib 并尝试在 Google Colab 中创建交互式绘图 我可以制作情节 但它是静态的 我当前的代码如下 matplotlib notebook config InlineBackend fi
  • 如何将输入文本字段内的一些文本设置为粗体?

    我正在尝试在输入文本字段内获取粗体特定文本 我不知道如何去做 因为 html 代码不会在文本字段内解释 所以类似 b 行不通的 是否可以仅将某些文本加粗 像bold 这样的方法只添加 b 围绕字符串 Thanks 这是一个技巧 INPUT
  • 检查超时是否已清除?

    我想知道是否有办法判断是否仍然设置了超时 var t setTimeout alertMsg 3000 我认为当你清除它时 t 会像未定义一样 但似乎有一些 id 没有被清除 不是直接的 但您可以创建一个包装对象来提供该功能 一个粗略的实现
  • 需要帮助在命令按钮中显示图标图像

    只是基本需求 但无法使其发挥作用 我想要一个 primefaces 按钮来显示我的图像 而不需要任何文本 但我得到的是一个只包含一个按钮 字符并且不显示图像 图像大小仅为 16x16 所以 这是 primefaces 按钮
  • 实现 i18n 使用 java 的最佳实践是什么? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 使用 java 实现 i18n 的最
  • 通过java代码配置Spring Security的自定义403错误页面

    有人知道如何在 Spring Security 中配置自定义 403 页面吗 在网上查看 我得到的所有结果都是使用 XML 配置 而我使用的是 Java 配置 这是我的安全配置 Configuration ComponentScan val
  • QTreeWidgetItem 内的 QComboBox

    有没有类似于 PyQT 的东西QTreeWidgetItem setCheckState 0 Qt Checked 但对于组合框呢 我在参考中看不到任何内容 那么如何插入自定义 QComboBox 作为 QTreeWidgetItem 中的
  • Linux - Yum 安装 GCC - 缺少内核头文件

    当我尝试在我的 linux centos 上安装 GCC 时 它会丢失 更新中的 glibc headers 2 5 58 el5 6 4 x86 64 有 depsolving 问题 gt 缺少依赖项 包 glibc headers 2
  • “ab”程序在收到大量请求后冻结,为什么?

    每当我使用 ab 对 Web 服务器进行基准测试时 它会在发送大量请求后冻结一段时间 直到 20 秒左右后才会继续 考虑以下用 Ruby 编写的 HTTP 服务器模拟器 require socket RESPONSE HTTP 1 1 20
  • 在cmd中为特定命令创建别名

    有没有办法创建一个别名cd PATHcmd 中的命令 For example instead of typing cd C John Pictures I d like to type just pictures in cmd and pr
  • 正则表达式连续检索至少 5 个相同的数字

    寻找正则表达式来查找相同数字的所有最长数字序列 从长度 5 开始 例如 Input hgfd 0022222233333 4444 5556555 0000000 Output 222222 33333 0000000 更新 应忽略空格 例
  • 如何在 React Native 中使用 Iframe?

    I try to find any way to add Iframe to my react native app I found react iframe https www npmjs com package react iframe
  • 样式自定义对话框片段不起作用

    我正在尝试将所有对话框片段的样式设置为在我的应用程序中看起来相同 来自我的设置片段的对话框的样式完全按照我想要的方式设置 对于我的自定义对话框片段 样式相似但不完全相同 由于某种原因 我的自定义对话框片段中的微调器 时间选择器 日期选择器
  • Angular 2 尝试在服务中实现 Observables

    我正在尝试使用 observable 将数据从一个组件发送到另一个组件 在这里 我正在像这样在服务中实现可观察的 import Injectable from angular core import Observable from rxjs
  • Mongoimport 合并/更新插入字段

    我正在尝试将多个 CSV 导入并合并到 mongo 中 但是文档被替换而不是合并 例如 如果我有 one csv key1 first column second column 和两个 csv key1 third column 我想最终得
  • 如何在不使用 max() 或迭代的情况下查找堆栈中的最大整数值?

    我在一次采访中被问到以下问题 如果你有一个整数堆栈 在不使用 Collections max 且不迭代堆栈和比较元素的情况下 如何找到堆栈的最大值 我用下面的代码回答了这个问题 因为我不知道除了使用任何 Collections API 或迭
  • HIVE - hive 子查询不适用于带有 IN 子句的 case when 语句

    我正在尝试将数据从 mysql 迁移到 hive 我无法使用 IN 子句编写子查询 case when 语句 这是我的查询 您能在这方面提供帮助吗 我没有遵循正确的语法 CREATE TABLE HIVE TPCE TEMP TMP CDM
  • 无法向 SoftLayer 用户 ID 添加权限

    curl D X POST d permissionSLUser in json o permissionSLUser out json https someuser email protected cdn cgi l email prot
  • GNU make 产生“命令在第一个目标之前开始”错误

    在我的 makefile 中 我想检查库是否存在并给出信息丰富的错误消息 我创建了一个条件 当找不到文件时应该退出 make 进程 9 ifeq JSONLIBPATH 10 JSONLIBPATH ALTJSONLIBDIR LIBJSO