如何获取系统';使用CMake的s路径分隔符

如何获取系统';使用CMake的s路径分隔符,cmake,buildconfiguration,path-separator,Cmake,Buildconfiguration,Path Separator,我正在用CMake配置一些项目。我需要将路径分隔符(例如,/或\)放入CMake变量中,以便在中执行某些操作,不管具体是什么。如何才能做到这一点?系统的路径分隔符没有可直接使用的CMake变量 但正如@vre使用命令评论的那样,您可以: 文件(到本机路径”/“\u分隔符) 消息(“系统的路径分隔符为“${u separator}”) 如果您有完整的路径 (CMake版本>=3.4)非常有用: …的内容已转换为shell路径样式。例如,斜杠在Windows Shell中转换为反斜杠,驱动器号在M

我正在用CMake配置一些项目。我需要将路径分隔符(例如,
/
\
)放入CMake变量中,以便在中执行某些操作,不管具体是什么。如何才能做到这一点?

系统的路径分隔符没有可直接使用的CMake变量

但正如@vre使用命令评论的那样,您可以:

文件(到本机路径”/“\u分隔符)
消息(“系统的路径分隔符为“${u separator}”)
如果您有完整的路径 (CMake版本>=3.4)非常有用:

的内容已转换为shell路径样式。例如,斜杠在Windows Shell中转换为反斜杠,驱动器号在MSYS Shell中转换为posix路径。
必须是绝对路径


CMake命令
file(TO_CMake_PATH“${dir}”dir)
file(TO_NATIVE_PATH“${dir}”dir)
有什么帮助吗?@vre:如果你能解释得更多的话,可能……从文档中:TO_CMake_PATH模式将本机路径转换为带有正斜杠(/)的CMake样式路径。输入可以是单个路径或系统搜索路径,如$ENV{path}。搜索路径将转换为cmake样式列表,以分隔;人物。TO_NATIVE_PATH模式将cmake样式转换为带有平台特定斜杠的本机路径(\在Windows和/或其他地方)。始终在周围使用双引号,以确保它被视为此命令的单个参数。@vre:但为什么空路径(
“${dir}”
毕竟最初是
)会在转换后产生一些有趣的结果?我刚刚使用以下CMakeLists.txt
cmake_-minimum_-required(版本2.8.12)项目进行了测试(a测试)文件(到CMAKE路径“\\”路径)消息(状态“\\转换到CMAKE路径${PATH}”)文件(到本机路径”/“路径)消息(状态“/转换到本机路径${PATH}”)文件(到CMAKE路径”路径)消息(状态“空路径转换到CMAKE路径${PATH}”)文件(到本机路径)消息(状态“空路径已转换为本机路径${path}”)
在windows上,一切似乎都按预期运行。嗯,你确定
/
到\u NATIVE\u PATH
在所有平台上都会产生一个路径分隔符吗?特别是在windows上,文件系统甚至没有一个根。@einpoklum我不确定,所以我在windows和Ununtu上试用了它。两者都很好。如果我看看有问题的CMake源代码,它主要转换斜杠(不像。