CMake:如何规范路径? [英] CMake: how to normalize paths?

查看:312
本文介绍了CMake:如何规范路径?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在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.

感谢对此的任何提示!

推荐答案

您可以使用 file(TO_CMAKE_PATH) 命令。

You can use the file(TO_CMAKE_PATH) command for this.


TO_CMAKE_PATH 模式将本机< path> 转换为带有正斜杠( / )。输入可以是单个路径,也可以是系统搜索路径,例如 $ ENV {PATH} 。搜索路径将转换为以; 字符分隔的cmake样式列表。

The TO_CMAKE_PATH mode converts a native <path> into a cmake-style path with forward-slashes (/). The input can be a single path or a system search path like $ENV{PATH}. A search path will be converted to a cmake-style list separated by ; characters.

这里是一个示例:

file(TO_CMAKE_PATH "$ENV{MY_DIR_VAR}" ENV_MY_DIR_VAR)

这篇关于CMake:如何规范路径?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆