msys 路径转换(或 msys 的 cygpath?)

2024-01-08

我需要将 /DEF:c:\filepath\myLib.def" 命令行选项从 bash 脚本传递到 MS 编译器/链接器。该路径是由 bash 脚本作为构建过程的一部分生成的。基本上,我的脚本的参数通过是:

-DEF:/c/filepath/myLib.def

MSYS路径转换 http://www.mingw.org/wiki/Posix_path_conversion因为不理解而无法正确处理/DEF:部分。如果我这样做就有效

-DEF=/c/filepath/myLib.def

但 MS 工具不理解这个参数。简而言之,在 MSYS bash 中写入该参数以便将其转换为正确的参数的正确方法是什么?

在 cygwin 上,我可以使用 cygpath,但没有等效的,因为来自 msys 的人认为不需要它(即使有使用 cygpath 的 cygwin 脚本)。


更新(2016 年 8 月):

这个问题不再相关,因为msys2 https://msys2.github.io/现在带有cygpath在其安装中。

...

我将在这里总结我的研究。

The cygpathMSYS 中的等效命令是使用以下命令:

{ cd /c/some/path && pwd -W; } | sed 's|/|\\|g'

这种方法的问题是它需要现有路径,例如这c:\some\path必须是现有目录;然而,真实的cygpath支持不存在的路径。

因此,如果您需要获取不存在的目录的路径,那么您可以回退到路径的 sed 转换:

{ cd 2>/dev/null /c/some/path && pwd -W ||
  echo /c/some/path | sed 's|^/\([a-z,A-Z]\)/|\1:/|'; } | sed 's|/|\\|g'

满嘴的斜杠是为了满足引用规则sed。因此,如果c:\some\path您的电脑上不存在,它会尝试将正斜杠转换为反斜杠并替换/c/ with c:\(或任何其他驱动器号)。唯一的缺点是它无法正确工作包含已安装组件的不存在路径,例如/bin/does-not-exist or /usr/bin/does-not-exist.

另一种方法是使用cygpath来自 MSYS 中的 cygwin。 cygwin 似乎设置了全局环境变量 CYGPATH,也就是说,您可以从常规 cmd.exe 中使用它:

%CYGPATH% -w /c/some/path
C:\some\path

或来自 MSYS:

$CYGPATH -w /c/some/path
C:\some\path

只要你设定指向/c to /cygdrive/c在 Cygwin 中。 但这种方法会打印你/usr位于 cygwin 安装中,而不是在 MSYS 中。

简而言之,我认为 msys 确实应该在默认工具集中包含真正的 cygpath,只是针对某些 msys 命令行参数转换逻辑无法自动处理的情况

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

msys 路径转换(或 msys 的 cygpath?) 的相关文章

  • Conda 环境中出现意外的 Python 路径

    在 Conda 环境中 base在这里 我对 Python 路径中的目录顺序感到惊讶 python c import sys print sys path export projects III data wcmp bioinformati
  • 如何检查路径是绝对路径还是相对路径

    UNIX 绝对路径以 开头 而 Windows 以字母 C 或 开头 Node js 是否有标准的多平台函数来检查路径是绝对路径还是相对路径 从节点版本 0 12 0 开始 您可以使用path isAbsolute path https n
  • 如何在使用路径别名导入的文件上使用 Babel?

    我正在设置构建脚本 以便在我的网络应用程序的某些路由上进行服务器端渲染 我正在使用 React 和 Firebase 现在 我的项目结构是 root gt buildScripts Some build scripts to replace
  • 如何删除Python中错误的路径字符?

    在Python中删除错误路径字符 例如Windows上的 或 的最跨平台的方法是什么 Solution 因为似乎没有理想的解决方案 所以我决定相对限制性地使用以下代码 def remove value deletechars for c i
  • IntelliJ 无法识别 PATH 变量

    我最近尝试导入现有的 Gradle 项目 使用启动窗口中的 打开项目 选项和现有的 build gradle 文件来自动设置项目 完成此操作后 IntelliJ 中出现一条错误消息 无法使用 Gradle 安装 Users myUser T
  • xcrun:错误:活动开发人员路径(“/Applications/Xcode.app/Contents/Developer”)不存在

    当我尝试使用时遇到 Xcode 问题Homebrew https en wikipedia org wiki Homebrew package manager 和 Git xcrun 错误 活动开发人员路径 Applications Xco
  • 使用 xcopy 命令时出现“复制的无效路径 0 个文件”错误

    您好 我有一个小命令可以批量复制文件 这会有所帮助 因为我每天会多次执行此特定复制 使用 xcopy 命令时会出现此问题 一切都按顺序进行 但我收到此错误 复制的路径 0 文件无效 这是代码 C Windows System32 xcopy
  • 在 Web.Config 的 Location Path 元素中指定多个目录

    在我的 ASP NET 的 Web 配置文件中 我定义了以下位置元素
  • 为什么使用 $PATH 以及它是什么

    我对编程有点陌生 不是真的 但我仍在学习 我们不是吗 虽然我了解 Java 和 Python 并且了解 C C JS C HTML CSS 等 并且我可以在终端中很好地导航 但我不熟悉终端中的 PATH 是什么 我使用 Linux 终端和
  • 如何在Linux中使用相对路径打开文件?

    我有一个程序 它使用相对路径 例如 打开文件 现在的问题是 当我从另一个目录执行程序时 相对路径不是相对于程序而是相对于工作目录 因此 如果我使用 path to program myprog 启动程序 它将无法找到该文件 有没有办法独立于
  • 协议缓冲区和 UTF-8

    编码方案 多操作系统和 Endian nes 的历史导致了对所有形式的字符串数据 即所有字母表 进行编码方面的混乱 因此 协议缓冲区仅处理其字符串类型中的 ASCII 或 UTF 8 并且我看不到任何接受 C wstring 的多态重载 那
  • C++ 中的跨平台原始数据类型

    与 Java 或 C 不同 C 中的原始数据类型的大小可能因平台而异 例如 int不保证是 32 位整数 各种编译器环境定义数据类型 例如uint32 or dword为此目的 但似乎没有固定大小数据类型的标准包含文件 实现最大可移植性的推
  • Windows 上 python 的长路径 - os.stat() 对于相对路径失败?

    我想访问 Windows 上的一些长 UNC 路径 我知道我需要使用 UNC 前缀 即 UNC 如果你逃脱了斜线 效果很好 os stat UNC server example com that has long path aaaaaaaa
  • 排序 sys.path:首先是 virtualenv,然后是 /usr

    为什么sys path包含 usr 在我的 virtualenv 的目录之前 我用以下命令创建 virtualenv system site packages The sys path目前看起来像这样 home my virtualenv
  • ANDROID NDK - android:找不到命令

    我试图完成 Android NDK 中提供的第一个示例练习 我试图在 cygwin 上运行以下命令 android update project p 然而 我得到android command not found error 我检查了我的
  • __get_cpuid 的可移植性如何?

    我在用着 get cpuid 获取有关的信息x86 and x86 64我的程序运行的处理器 在 Linux 和 Mac OS 上使用 GCC 似乎可以在不包含任何头文件的情况下编译和运行 但是它的可移植性如何 它可以与其他编译器一起使用吗
  • 如何修复此错误:[WinError 267] 目录名称无效:

    我有一个 python 脚本 它创建一个 GUI 应用程序 在用户选择路径后显示现有文件的列表 系统显示在QlistWidget文件名及其父文件夹 我想从列表中获取所选文件的完整路径 例子 C Users test Desktop test
  • Django 可重用应用程序配置

    我有一些连接到数据库的 Django 中间件代码 我想将中间件变成可重用的应用程序 app 这样我就可以将其打包以分发到许多其他项目中 而无需复制和粘贴 我不明白可重用应用程序应该在哪里配置自身 由于它是用于重新分发的 所以我无法自己编写中
  • Jenkins 管道中的导出命令

    如何在 Jenkins 管道中添加 导出 unix 命令 我里面有一个詹金斯 舞台 和 步骤 导出命令的语法是什么 我需要使用导出命令设置环境变量 PATH 您可以更新 PATH像这样 pipeline agent label docker
  • 计算MKPolyline路径的距离?

    我想获取 MKPolyline 路径的米数 以便我可以告诉用户完成路径还剩多少米 我一直在寻找一些东西来做这件事 但我什么也没得到 Thanks 尽管听起来很乏味 但除非您想自己进行数学计算 否则您可能必须迭代该行的思想points 将每个

随机推荐