Path 如何确保在OMake中引用目录名?

Path 如何确保在OMake中引用目录名?,path,whitespace,omake,Path,Whitespace,Omake,我有一套相对复杂的OMake文件,用于在特定平台上进行交叉编译。我的源码是在C++中。 我正在从Windows构建,我需要向编译器传递名称中包含空格的目录。插入命令行以编译文件的includes字符串的创建方式如下: public.PREFIXED_INCLUDES = $`(addprefix $(INCLUDES_OPT), $(set $(absname $(INCLUDES)))) 在OMake文件中的其他一些点上,我有一行类似于: INCLUDES += $(dir "$(LIBRA

我有一套相对复杂的OMake文件,用于在特定平台上进行交叉编译。我的源码是在C++中。 我正在从Windows构建,我需要向编译器传递名称中包含空格的目录。插入命令行以编译文件的includes字符串的创建方式如下:

public.PREFIXED_INCLUDES = $`(addprefix $(INCLUDES_OPT), $(set $(absname $(INCLUDES))))
在OMake文件中的其他一些点上,我有一行类似于:

INCLUDES += $(dir "$(LIBRARY_LOCATION)/Path with spaces/include")
在命令行的中间,它扩展为:

-IC:\Library location with spaces\Path with spaces\include
我希望它扩展到:

-I"C:\Library location with spaces\Path with spaces\include"

如果可能的话,除了“INCLUDES+=…”行之外,我不想更改任何内容,尽管修改该文件中的其他内容也可以。我不想做像更改前缀_include的定义这样的事情,因为这是一套OMake文件中的内容,这些文件是SDK的一部分,在我下面可能会更改。这可能吗?如果是,我怎么做?如果没有,我可以通过什么方式确保通过修改小的makefile代码(希望只有一行)引用包含空格的内容?

如果其他人也有同样的问题,我想我会分享我最终采用的解决方案,因为我从来没有想过如何用引号括起来。我没有在名称周围加引号,而是将路径转换为短(8.3)版本。我通过一个名为shorten.js的简单JScript文件和一行OMake函数实现了这一点

剧本:

// Get Access to the file system.
var FileSystemObject = WScript.CreateObject("Scripting.FileSystemObject");

// Get the short path.
var shortPath = FileSystemObject.GetFolder(WScript.Arguments(0)).ShortPath;

// Output short path.
WScript.StdOut.Write(shortPath);
职能:

ShortDirectoryPath(longPath) =
    return $(dir $(shell cscript /Nologo $(dir ./tools/shorten.js) "$(absname $(longPath))"))
现在,我只使用一行代码,如下所示,表示includes:

INCLUDES += $(ShortDirectoryPath $(dir "$(LIBRARY_LOCATION)/Path with spaces/include"))

标准库函数
quote
在其参数周围添加转义引号,因此它应该执行以下操作:

INCLUDES += $(quote $(dir "$(LIBRARY_LOCATION)/Path with spaces/include"))
如果需要,请参阅