Path makefile中的路径定义

Path makefile中的路径定义,path,compiler-errors,makefile,Path,Compiler Errors,Makefile,我对在makefile中指示路径有疑问,我想澄清一下 假设我的结构是这样形成的: /home/machinename/softwarefolder/mainfolder --------------------------------------------> /subfolder1 --------------------------------------------> /subfolder2 这意味着子文件夹1和子文件夹2在/main文件夹中处于相同的嵌套级别 现在,我正在子

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

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

/home/machinename/softwarefolder/mainfolder
--------------------------------------------> /subfolder1
--------------------------------------------> /subfolder2
这意味着子文件夹1和子文件夹2在/main文件夹中处于相同的嵌套级别

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

子文件夹2中的程序用于编译的此配置文件在运行后由程序自身自动生成。/configure

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

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

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

MACRO    =  /home/machinename/softwarefolder/mainfolder/subfolder1
在编译时生成“缺少分隔符”错误


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

Make在很大程度上不会以任何方式解释变量的内容。如何解释
的问题完全取决于变量的使用位置。如果在像
。/subfolder1
这样的路径有意义的地方使用它,那么这就是它的解释方式。如果不是,就不是

由于您没有显示如何使用
$(宏)
,我们无法提供帮助。但一般来说,你的问题的答案是“是的,它意味着转到父目录”

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


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

宏以以下方式引用:首先在另一个宏中
MACRO2=-I$(MACRO1)/otherdirs/otherdirs
,然后在后缀的编译规则中,例如
.F.o:$(CPP)$(CPPFLAGS)$(MACRO2)$$*.f90
。你一提出这个标签,我想我就明白了问题所在:我用OpenOffice打开了配置文件(Ubuntu自动打开了),它可能用“软标签”(即:空格)代替了“硬标签”。谢谢你的帮助!