反斜杠在makefile中转义和删除

时间:2015-08-13 10:34:39

标签: makefile

考虑到这一点 - 相当古怪 - makefile,通常是专门设计为清楚来说明一系列不一致,试图找到Make如何处理makefile中的引号和反斜杠的“规则”。 p>

所以,makefile:

prereq =   \
\:         \
\\:        \
\\\:       \
\\\\:      \
\\\\\:     \
\\\\\\:

all: % : $(prereq)
    @echo '$+'
%:;

跑步,我明白了:

: \\: \: \\\\: \\: \\\\\\:

现在,我们来看看。

我们基本上有6个先决条件:

  1. \:
  2. \\:
  3. \\\:
  4. \\\\:
  5. \\\\\:
  6. \\\\\\:
  7. 其中Make分别解释 ,如:

    1. :
    2. \\:
    3. \:
    4. \\\\:
    5. \\:
    6. \\\\\\:
    7. 你在这看到一个模式吗?确定有。

      对于任何偶数反斜杠,请使用全部反斜杠字面,这样\\:仍为{{ 1}}。 \\:仍为\\\\:。最后:\\\\:仍为\\\\\\:。根本没有逃避或任何解释。

      对于任何奇数反斜杠,请将删除一半。确切地说,它是整数除法的一半,其中Make删除1为3,2为5.一个小的扭曲,1反斜杠,Make删除1反斜杠。因此\\\\\\:变为\::变为\\\:\:变为\\\\\:

      现在,确定它必须有用,这使得制造用于去除反斜杠的所有“理论”变得困难。

      但是,它是什么?

0 个答案:

没有答案