Исходное индексирование для статических библиотек. Перфорс

Задачи: 1. собрать статические библиотеки на одной сборочной машине 2. собрать динамическую библиотеку (связав статические библиотеки из шага 1) на другой сборочной машине. Вторая машина не имеет доступа к системе управления версиями статических библиотек.

Я создаю static_library.lib с отладочной информацией (/Zi). PDB-файл создан. Но он не включает полные пути к исходным файлам. Поэтому я использую P4Index.cmd с переключателем /Save: P4Index.cmd -source="c:\project1\source" -symbols="c:\project1\out_Win32\Debug" /Save=c:/project1/srcinfo

Он создал файлы: p4_files.dat, server.dat Как я вижу, p4_files.dat имеет пары: имя файла и путь Perforce.

Затем я создаю dynamic_library.dll и связываю static_library.lib. Но при запуске P4Index.cmd с ключом /Load возникает ошибка:

ssindex.cmd [ОШИБКА] P4: Не удается найти c:/project1/srcinfo\sd_files.dat в @INC ......

Что такое файл sd_files.dat?


person cpp_fanatic    schedule 09.12.2016    source источник


Ответы (1)


Глядя на файл p4.pm, который находится в той же папке, что и P4Index.cmd, кажется, что это может быть ошибка в коде.

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();
}

Похоже, что строка require должна использовать p4_files.dat вместо sd_files.dat.

Из документации Microsoft похоже, что sd — это абстрактное имя по умолчанию, которое используется для ссылки на менеджер управления исходным кодом, и поэтому sd_files.dat — это абстрактное имя для файла dat.

Мои вышеуказанные подозрения, по-видимому, подтверждаются другими файлами pm системы управления версиями (cvs, svn, tfs и vss), все они либо не имеют строки require, либо используют для нее имя файла варианта системы управления версиями.

Я проверил вышеуказанное изменение, и данные загружаются без ошибок.

person Alistair White    schedule 30.11.2017