代码之家  ›  专栏  ›  技术社区  ›  Geo

如何影响makefile变量中的路径?为什么我的例子不起作用?

  •  16
  • Geo  · 技术社区  · 15 年前

    在makefile的开头,我有一行:

    PATH := $(PATH):/other/dir
    

    这就产生了这个错误: Recursive variable 'PATH' references itself . 我该怎么做才能奏效?

    3 回复  |  直到 11 年前
        1
  •  31
  •   Tim Palak Chaudhary    15 年前

    GNUmake(以及其他许多方法)有两种主要的方法来为变量赋值。它们根据您使用的运算符而不同。根据 the documentation ,一个等号( = )将导致 递归展开 值,而冒号等于( := )将导致 简单扩展 .

    您引用的代码使用 = 如此 应该 引起简单的膨胀。您看到的是一条与递归扩展关联的错误消息。如果你有这样的错误,我会预料到的:

    PATH = $(PATH):/other/dir
    

    错误是否是由makefile中的另一行引起的 没有 引用?如果你确定你的剪切和粘贴是正确的,并且是这条线导致了这个问题,那么如果我们能看到整个未编辑的makefile,这将是很有帮助的。

        2
  •  2
  •   J. A. Faucett    11 年前

    另一种可能是使用shell函数:

    path=$(shell printenv path):/other/dir

        3
  •  -5
  •   Pablo    15 年前

    尝试将$(path)更改为$path

    推荐文章