2016-12-09 5 views
0

タスクは です。1つのビルドマシンにスタティックライブラリを作成します 2.別のビルドマシンにダイナミックライブラリ(ステップ1のスタティックライブラリをリンクする)をビルドします。 2番目のマシンは静的ライブラリのソース管理にアクセスできません。静的ライブラリのソース索引付け。 Perforce

私は、static_library.libをデバッグ情報(/ Zi)でビルドします。 PDBファイルが作成されました。 しかし、ソースファイルへの完全なパスは埋め込まれていません。P4Index.cmd -source = "c:\ project1 \ source" -symbols = "c:\ project1 \ out_Win32 \ Debug"/Save = c:/ project1/srcinfoこれで、P4Index.cmdを/ Saveスイッチと共に使用します。

ファイルを作成しました:p4_files.dat、servers.dat p4_files.datにはfilenameとPERFORCEのパスがあります。

次に、dynamic_library.dllをビルドし、static_library.libをリンクします。 /LoadスイッチでP4Index.cmdを実行するとエラーが発生します。

ssindex.cmd [エラー] P4:@INCにc:/ project1/srcinfo \ sd_files.datが見つかりません。 ...

ファイルsd_files.datとは何ですか?

答えて

0

P4Index.cmdと同じフォルダにあるp4.pmファイルを見ると、実際にはコードにバグがあるようです。

sub LoadFileInfo { 
    my $self = shift; 
    my $dir = shift; 

    if (-e "$dir\\p4_files.dat") { 
     our $FileData1; 
     require "$dir\\sd_files.dat"; 
     $$self{'FILE_LOOKUP_TABLE'} = $FileData1; 
    } else { 
     ::status_message("No Perforce information saved in $dir.\n"); 
    } 

    return(); 
} 

ラインを必要とするが、実際にp4_files.datの代わりsd_files.datを使用する必要があるように見えます。

Microsoft's documentationを読んでから、ソース管理マネージャを参照するために使用されるので、sd_files.datがDATファイルの抽象名前ですされているデフォルト抽象的な名前であるSDのように見えます。

他のソースコントロールのpmファイル(cvs、svn、tfs、vss)で疑わしいと思われるものは、すべてがrequire行を持たないか、ソースコントロールのバリアントファイル名を使用しています。

私は上記の変更をテストし、データはエラーなくロードされます。

関連する問題