CMake:如何规范化路径?
在CMake中是否有一种可靠的方法来规范化路径 例如:CMake:如何规范化路径?,cmake,Cmake,在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\m
# 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(或工具链下游的工具)可以使用混合分隔符(/
或\
)处理路径,也可以不使用。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.
谢谢你的提示 您可以使用该命令执行此操作
到\u CMAKE\u路径
模式将本机的
转换为带有前斜杠(/
)的CMAKE样式路径。输入可以是单个路径或系统搜索路径,如$ENV{path}
。搜索路径将转换为cmake样式列表,由分隔代码>字符
以下是一个例子:
file(TO_CMAKE_PATH "$ENV{MY_DIR_VAR}" ENV_MY_DIR_VAR)
我同意。答案当然是:)…虽然我在寻找问题的解决方案时找不到其他帖子。从CMake 3.20开始,您现在还可以使用命令将路径转换为带有正斜杠的CMake路径。请参见我在重复问题中的回答。