"/ Save"と "/ Load"オプションを使用して、静的ライブラリのソース情報をそれぞれ格納して読み込むことができます。これらのオプションを使用すると、ライブラリの情報を保存し、後でライブラリにリンクするプロジェクトのインデックスを作成するときに、その情報をインポートできます。
ライブラリソリューションのインデックスを作成するときは、ライブラリのソースファイルに関するインデックス情報を格納するディレクトリとともに "/ Save"フラグを指定します。例えば
ssindex.cmd /System=SVN /Save=c:\source\libproj\srcinfo /Source=c:\source\libproj /Symbols=c:\source\libproj\Release\*.pdb
後であなたのライブラリーを含んでいるプロジェクトのインデックスを作成するには、ライブラリのソースファイル情報を含むディレクトリを「/ロード」フラグを指定し、(あなたがソース管理のためのSubversionを使用していると仮定)。たとえば、
ssindex.cmd /System=SVN /Load=c:\source\libproj\srcinfo /Source=c:\source\binproj /Symbols=c:\source\binproj\Release\*.pdb
このテクニックの使用には、2つの潜在的な問題があります。第1に、一部のソース管理プロバイダは、ソース管理情報の保存とロードをサポートしていない可能性があります。私は、Subversionプロバイダは、それがSourceSafeプロバイダのように見えるが、私は他のチェックしていないことを知っている。
第2に、この手法は、すぐに使用できる外部スタティックライブラリの1つに対してのみ機能するように見えます。複数のディレクトリから情報をロードする方法はないようで、 "/保存"オプションを使用するたびにスクリプトは現在ディレクトリの内容を上書きします。おそらく、ソースコントロールプロバイダモジュールを編集して上書きするのではなく、保存ディレクトリのファイルに追加することができますが、試していません。
また、前述のように、ライブラリが別のソリューションの一部として構築されている場合にのみ、これを行う必要があります。静的ライブラリがインデックス作成しているソリューションの一部である場合、ソースファイルは "/ Source"オプションで指定されたパスに含まれていればインクルードされます。
私の場合、パス名の問題は問題にはなりません。バイナリプロジェクト(EXEまたはDLL)のPDBの場合、dia2dumpの出力には、 "Found table:SourceFiles"というラベルのセクションにソースファイルのリスト が含まれています。静的ライブラリプロジェクト用に生成されたPDBファイルでは、 は対応するセクションが常に空であるようです。 これは、 "ssindex"が静的ライブラリプロジェクトでは動作しない理由であると思います。しかし、私はこの情報がPDBに含まれておらず、これを "治療"するコンパイラの設定を見つけられなかった理由は、 では分かりません。 –