gpt4 book ai didi

makefile - gnu make 忽略.INCLUDE_DIRS?

转载 作者:行者123 更新时间:2023-12-02 21:40:04 32 4
gpt4 key购买 nike

我有以下 make 文件:

$ cat foo.mk
.INCLUDE_DIRS += ..
$(info include_dirs is [${.INCLUDE_DIRS}])
include upper.mk

在上一层目录中,我有

$ cat ../upper.mk
$(info HERE!!)

当我运行 makefile 时,我得到:

$ make -f foo.mk
include_dirs is [/usr/include /usr/local/include /usr/include ..]
foo.mk:3: upper.mk: No such file or directory
make: *** No rule to make target 'upper.mk'. Stop.

即使我指定绝对路径,这也不起作用:

.INCLUDE_DIRS += /absolute/path/to/include/file

为什么 make 找不到 upper.mk,即使我已将可以找到它的目录 (..) 添加到.INCLUDE_DIRS 变量?

请注意,这确实有效:

$ make --include-dir=.. -f foo.mk
include_dirs is [.. /usr/include /usr/local/include /usr/include]
HERE!!

版本信息:

$ make --version
GNU Make 4.0

最佳答案

不幸的是 .INCLUDE_DIRS 实际上是只读的:GNU make 根据默认的搜索目录列表以及您通过 -I 指定的任何添加内容为其构造一个值或 --include-dir 命令行选项,但此后 GNU make 对变量不执行任何操作。

如果要将 .. 添加到包含的 makefile 的搜索目录列表中,正确的方法是将 make 调用为 make -I ..

关于makefile - gnu make 忽略.INCLUDE_DIRS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32032589/

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