是否有一种可靠的方法来标准化 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 中执行此操作?
CMake(或工具链下游的工具)可以处理具有混合分隔符的路径(/
or \
),也可能不会。 CMake 使用/
作为标准分隔符。 CMake 针对路径分隔符错误的路径生成的典型警告\
可能看起来类似于:
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.
感谢您对此的任何提示!
您可以使用file(TO_CMAKE_PATH) https://cmake.org/cmake/help/latest/command/file.html为此的命令。
The TO_CMAKE_PATH
模式转换本机<path>
进入带有正斜杠的 cmake 风格路径(/
)。输入可以是单个路径或系统搜索路径,例如$ENV{PATH}
。搜索路径将转换为 cmake 样式的列表,由;
人物。
这是一个例子:
file(TO_CMAKE_PATH "$ENV{MY_DIR_VAR}" ENV_MY_DIR_VAR)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)