Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake:如何规范化路径?_Cmake - Fatal编程技术网

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

在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(或工具链下游的工具)可以使用混合分隔符(
/
\
)处理路径,也可以不使用。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路径。请参见我在重复问题中的回答。