gnu make 忽略 .INCLUDE_DIRS?
gnu make ignoring .INCLUDE_DIRS?
我有以下生成文件:
$ 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 as make -I ..
我有以下生成文件:
$ 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 as make -I ..