0

我对在 makefile 中指示路径有疑问,我想澄清一下。

假设我的结构是这样制作的:

/home/machinename/softwarefolder/mainfolder
--------------------------------------------> /subfolder1
--------------------------------------------> /subfolder2

这意味着 subfolder1 和 subfolder2 在 /mainfolder 中处于相同的嵌套级别。

现在我正在子文件夹 2 中编译一些东西(这意味着我 cd 到那个文件夹),它使用一个带有宏的配置文件,该文件指向一个路径,在我的例子中,它位于子文件夹 1 中。

这个子文件夹2中的程序用来编译的configure文件是程序自己运行后自动生成的./configure

自动生成的配置文件有这样定义的宏

MACRO    =  ../subfolder1

两个点 (..) 是否与 cd 命令一样表示“后退一步”(因此,配置文件指向正确的文件夹)?

如果第一个问题的答案是“否”,那么为什么要用上述宏代替

MACRO    =  /home/machinename/softwarefolder/mainfolder/subfolder1

在编译时生成“缺少分隔符”错误?

很抱歉这个可能是微不足道的问题,感谢您的帮助!

4

1 回答 1

0

在大多数情况下,Make 不会以任何方式解释变量的内容。将如何..解释的问题完全取决于变量的使用位置。如果它用在类似路径../subfolder1有意义的地方,那么这就是它的解释方式。如果不是,则不是。

由于您不显示如何$(MACRO)使用,我们无能为力。但总的来说,您的问题的答案是“是的,这意味着转到父目录”。

至于您的第二个问题,我无法想象仅更改一行会导致“缺少分隔符”错误。也许您的编辑器“有用地”对文件进行了其他更改,例如删除 TAB 和替换空格,或添加 TAB?TAB 字符在 makefile 中是特殊的。

如果您需要第二个问题的帮助,您必须提供 (a) 您收到的确切错误(最好是剪切和粘贴),以及 (b) 在错误消息中指定的行号处的 makefile 中规则的确切文本。

于 2013-05-16T15:07:25.293 回答