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

假设我的结构是这样构成的:

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

这意味着子文件夹1和子文件夹2在/mainfolder中处于相同的嵌套级别。

现在,我正在子文件夹2中编译某些内容(这意味着我cd到该文件夹​​),该文件使用带有宏的配置文件,该宏指向在我的情况下位于子文件夹1中的路径。

运行./configure之后,程序本身会自动生成子文件夹2中程序用来编译的配置文件。

自动生成的配置文件具有以此方式定义的宏
MACRO    =  ../subfolder1

是否像cd命令一样,两个点(..)指示“返回上一步”(因此,配置文件指向正确的文件夹)?

如果第一个问题的答案为“否”,那么为什么用上述宏替换为
MACRO    =  /home/machinename/softwarefolder/mainfolder/subfolder1

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

抱歉,这个问题可能很琐碎,感谢您的帮助!

最佳答案

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

由于您没有显示$(MACRO)的使用方式,因此我们无济于事。但总的来说,您的问题的答案是“是的,这意味着要转到父目录”。

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

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

10-05 23:48