0

我有几个程序不是在 Cygwin 上本地安装,而是使用 cygstart + cygpath 来无缝利用这些程序的 Windows 安装。

示例:Gedit、Subversion 1.6.1 等。

我们当然会直接使用 Cygwin 安装程序来安装这些……但是,我们有一些讨厌的要求:

1) 自定义前缀位置,例如 Cygport for GEdit 将安装它/usr/bin/gedit.exe而不是/common/web/bin/gedit.exe我们需要的位置。

2) 我们需要一个不易从任何 cygwin 存储库访问的版本。

因此,我安装了产品的 Windows 安装程序版本,然后创建了一个透明调用 Windows 程序的 bash 脚本。示例:/common/web/bin/gedit是一个 bash 脚本,它将调用c:\apps\gedit\gedit.exe

问题是,您不能只cygpath -w在每个参数上运行。您必须能够仅解析文件名参数。这基本上需要进入每个项目的源代码,找到int main(int argc, char** argv)然后逆向工程如何解析每个文件名。

有没有人这样做过?我很想看到一些例子,说明你是如何使用 bash 脚本或 C++ 程序做到这一点的。

4

1 回答 1

1

经过一点点的实验,我发现这是一个自创的问题。

我的问题是我试图用我自己的 .sh 文件包装 Windows 本机代码。然后,它并没有让 Cygwin 自动将路径转换为写入平台。

对于 svn 1.6.1,这是我为解决此问题所做的:

  1. svn 安装在c:\apps\svn\1.6.1\
  2. ln -s /cygdrive/c/apps/svn/1.6.1/bin/svn.exe /common/web/bin/svn.exe
  3. 对所有 SVN exe 重复步骤 2。
  4. 此时,/common/web/bin/svn.exe它就像是 Cygwin 的一部分一样工作!惊人!
于 2012-07-30T16:28:13.047 回答