我正在使用CMake配置一些项目。我需要将路径分隔符(例如/
或\
)存储到一个CMake变量中,以便进行一些操作,无论具体是什么。我该如何做?
我正在使用CMake配置一些项目。我需要将路径分隔符(例如/
或\
)存储到一个CMake变量中,以便进行一些操作,无论具体是什么。我该如何做?
目前还没有可直接使用的CMake变量,用于系统路径分隔符。
但是,如@vre所评论,可以使用file(TO_NATIVE_PATH)
命令来实现:
file(TO_NATIVE_PATH "/" _separator)
message("The systems's path separator is '${_separator}'")
$<SHELL_PATH:...>
generator expression 很有用(CMake版本 >= 3.4):
...
的内容将被转换为 shell 路径格式。例如,在 Windows shells 中,斜杠将被转换为反斜杠,并且在 MSYS shells 中,驱动器号将被转换为 posix 路径。...
必须是绝对路径。
/
的 TO_NATIVE_PATH
在所有平台上都会产生路径分隔符吗?特别是在 Windows 上,甚至没有一个文件系统的根目录。 - einpoklumSystemTools::ConvertToWindowsOutputPath()
,它主要是转换斜杠(与$<SHELL_PATH:...>
生成器表达式不同)。 - Florian
file(TO_CMAKE_PATH "${dir}" dir)
和file(TO_NATIVE_PATH "${dir}" dir)
有帮助吗? - vre${dir}
最初是""
)在转换后会产生有趣的结果呢? - einpoklumcmake_minimum_required (VERSION 2.8.12) project(a_test) file(TO_CMAKE_PATH "\\" path) message(STATUS "\\ 转换为CMake路径 ${path}") file(TO_NATIVE_PATH "/" path) message(STATUS "/ 转换为本地路径 ${path}") file(TO_CMAKE_PATH "" path) message(STATUS "空路径转换为CMake路径 ${path}") file(TO_NATIVE_PATH "" path) message(STATUS "空路径转换为本地路径 ${path}")
一切都按预期工作。 - vre