问题描述
在CMake中是否有一种可靠的方法来规范路径?
Is there a robust way to normalize paths in CMake?
示例:
# Let's assume that an environment variable MY_ROOT_DIR is set
# that points to some directory.
set(MYFILE "$ENV{MY_ROOT_DIR}/somefile.txt")
message(${MYFILE})
# This will result for example in
# Win: C:\path\to\my\root\dir/somefile.txt
# Unix based: /path/to/my/root/dir/somefile.txt
在此示例中,将需要规范化 MY_ROOT_DIR
(即替换反斜杠)将其用作路径组件之前)。您将如何在CMake中做到这一点?
In this example, it would be required to normalize MY_ROOT_DIR
(that is to replace backslashes with slashes) prior to using it as path component. How would you do this in CMake?
CMake(或工具链下方的工具)可能使用混合分隔符( /
或 \
),也可以不这样做。 CMake使用 /
作为标准分隔符。 CMake针对路径分隔符 \
生成的典型警告可能类似于以下内容:
CMake (or the tools further down the toolchain) may handle paths with mixed separators (/
or \
), or may not. CMake uses /
as the standard separator. A typical warning generated by CMake for paths with the wrong path separator \
may look similar to this:
CMake Warning (dev) at cmake_install.cmake:5 (set):
Syntax error in cmake code at
C:/path/to/my/root/build/cmake_install.cmake:5
when parsing string
C:\path\to\my\root/somefile.txt
Invalid escape sequence \p
Policy CMP0010 is not set: Bad variable reference syntax is an error. Run
"cmake --help-policy CMP0010" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
感谢对此的任何提示!
推荐答案
您可以使用命令。
You can use the file(TO_CMAKE_PATH)
command for this.
这里是一个示例:
file(TO_CMAKE_PATH "$ENV{MY_DIR_VAR}" ENV_MY_DIR_VAR)
这篇关于CMake:如何规范路径?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!