Запустите цель установки CMake с incredibuild

Я пытаюсь использовать incredibuild для ускорения компиляции проекта cmake в командной строке, компилируя с помощью Visual Studio 2013. Я могу скомпилировать и установить библиотеки с помощью команды:

BuildConsole zlib.sln /prj=INSTALL /cfg="Debug|x64"

Но он пропускает часть установки:

Microsoft Visual Studio 2013 Version 12.0.40629.0.
Copyright (C) Microsoft Corp. All rights reserved.
1>------ Skipped Build: Project: INSTALL, Configuration: Debug x64 ------
1>Project not selected to build for this solution configuration

Однако, если я запускаю его из Visual Studio, он отлично работает:

Initializing...

Microsoft Visual Studio 2013 Version 12.0.40629.0.
Copyright (C) Microsoft Corp. All rights reserved.
1>------ Build started: Project: INSTALL, Configuration: Debug x64 ------
1>Build started 1/6/2016 4:52:09 PM.
1>PrepareForBuild:
1>  Creating directory "x64\Debug\INSTALL\INSTALL.tlog\".
1>InitializeBuildStatus:
1>  Creating "x64\Debug\INSTALL\INSTALL.tlog\unsuccessfulbuild" because     "AlwaysCreate" was specified.
1>PostBuildEvent:
1>  -- Install configuration: "Debug"
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/lib/zlibd.lib
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/bin/zlibd.dll
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/lib/zlibstaticd.lib
1>-- Installing:     C:/work/dev/workspace/thirdparty/tmp/install/zlib/include/zconf.h
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/include/zlib.h
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/share/man/man3/zlib.3
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/share/pkgconfig/zlib.pc
1>  ...
1>  
1>FinalizeBuildStatus:
1>  Deleting file "x64\Debug\INSTALL\INSTALL.tlog\unsuccessfulbuild".
1>  Touching "x64\Debug\INSTALL\INSTALL.tlog\INSTALL.lastbuildstate".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:00.40
========== Build: 1 succeeded, 0 failed, 6 up-to-date, 0 skipped ==========

Любая подсказка?

Спасибо ! Эммануэль


person CanardMoussant    schedule 05.01.2016    source источник


Ответы (2)


Этот ответ от команды IncrediBuild: Мы загрузили и протестировали ту же сборку zlib-1.2.8 с Microsoft Visual Studio 2013 в нашей лаборатории. Мы обнаружили, что по умолчанию в zlib при использовании cmake для создания файлов .sln и .vcxproj сгенерированный проект INSTALL НЕ был включен в конфигурацию сборки «Debug | x64». При сборке сгенерированного zlib.sln для "Debug | x64" проект INSTALL не создается ни через VS IDE, ни через команду BuildConsole - и это нормально, поскольку проект не был включен в конфигурацию сборки. После того, как проект INSTALL помечен как выбранный для сборки в конфигурации «Отладка | x64», он не будет пропущен, и проект будет собран правильно. Либо выбор явной сборки этого проекта для «Отладка | x64», либо исправление zlib cmake для включения этого проекта для сборки «Отладка | x64» устраняет проблему.

Отказ от ответственности: автор является сотрудником IncrediBuild.

person Dori    schedule 20.01.2016
comment
Ошибка в zlib? Вы запилили его или предоставили патч? - person usr1234567; 20.01.2016
comment
Я не думаю, что это подходящее исправление, поскольку CMAKE не поддерживает создание решения с уже выбранным INSTALL, и мы должны часто повторно генерировать наш CMAKE, пока это происходит на сервере сборки. Смысл сервера сборки в значительной степени теряется, когда кто-то должен вручную войти в систему и переустанавливать флажок каждый раз, когда cmake регенерирует - person Lynden Shields; 21.10.2016

Решение, которое работает для меня, это сначала запустить MSBuild для решения, а затем для Install.vcxproj по отдельности. Это совершенно не связано с IncrediBuild, я использую просто MSBuild. Я полагаю, что IncrediBuild можно использовать для решения, а затем MSBuild для проекта Install.

На самом деле, в моем случае (без IncrediBuild) достаточно просто запустить MSBuild для Install.vcxproj, он обнаруживает зависимости и создает другие проекты перед проектом Install.

person Ivan Kolev    schedule 07.12.2016
comment
Да, в итоге я сделал то же самое с incredibuild. Интересно, почему MSBuild не делает то же самое, что и пользовательский интерфейс VS, где сборка проекта установки делает все. - person CanardMoussant; 07.12.2016