gpt4 book ai didi

makefile - GNU make 产生 "commands commence before first target"错误

转载 作者:行者123 更新时间:2023-12-03 06:07:41 39 4
gpt4 key购买 nike

在我的 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 有了它的目标。

我尝试将此条件 block 放入目标中(例如名为 isJSONLibraryInstalled 的目标),但这无法正确执行。

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

最佳答案

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

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

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

关于makefile - GNU make 产生 "commands commence before first target"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4713663/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com