0

Cygwinにネイティブにインストールする代わりに、cygstart + cygpathを使用して、それらのプログラムのWindowsインストールをシームレスに利用するプログラムがいくつかあります。

例: Gedit、Subversion 1.6.1 など

もちろん、Cygwin インストーラーを使用してこれらをネイティブにインストールします...ただし、いくつかの厄介な要件があります。

1) カスタム プレフィックスの場所。たとえば、GEdit の Cygport は、必要な場所では/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

もう少し実験を重ねた結果、これは自分で作成した問題であることがわかりました。

私の問題は、Windows ネイティブ コードを独自の .sh ファイルでラップしようとしたことでした。そのため、Cygwin は書き込みプラットフォームへのパス変換の魔法を自動的に実行できませんでした。

svn 1.6.1 の場合、この問題を修正するために私が行ったことは次のとおりです。

  1. インストールされたsvnc:\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.exeCygwin の一部であるかのように動作します! すばらしい!
于 2012-07-30T16:28:13.047 に答える