我对在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中规则的确切文本。