Подтвердить что ты не робот

Как создать смешанное (С++ + С#) решение с Travis CI?

У меня есть решение с 4 проектами:

  • С++.lib "A"
  • С++.dll(на основе созданной SWIG-оболочки) "AWrapper"
  • С#.dll(на основе созданной SWIG-оболочки) "ASharp"
  • проект С# Unit Test (по умолчанию, но я могу его перенести в NUnit) "ASharpTests"

Глядя на общую документацию, С# Travis CI docs и Документы С++ не могут решить, как решить такую ​​многоязычную проблему проекта.

Я могу создать проект CMake для библиотеки С++ и wraper. Но что мне делать дальше, как решить следующие проблемы:

  • Как скомпилировать только выбранные проекты из решения VS?
  • Как смешивать несколько lenguages, что нужно записывать в конфигурацию Travis (2 проекта С++, 2 проекта С# для запуска тестов .so build из кода С++ должны быть в той же папке, что и тесты С#)?
4b9b3361

Ответ 1

Инструмент сборки CI - MSBuild

Если вы используете Visual Studio для создания своих С++/С#/VB/других решений, вы должны использовать MSBuild в качестве инструмента построения CI. См.: https://msdn.microsoft.com/en-us/library/dd393574.aspx

MSBuild может использоваться для создания файлов проекта в Visual Studio (.csproj,.vbproj, vcxproj и других). Однако это не рекомендуется. Вместо этого MSBuild должен напрямую создавать решения Visual Studio (.sln). Основная причина заключается в том, что таким образом IDE Visual Studio (используемая разработчиками) и командная строка MSBuild (используемая системой CI) построили решение точно так же. Во-вторых, изменение конфигурации будет в одном и только одном месте при смене проектов с помощью Configuration Manager в среде IDE.

Configuration Manager

Пример MSBuild XML script:

<Target Name="BUILD_SOLUTION">         
    <MSBuild Projects="$(SOLUTION_NAME).sln" Properties="Configuration=Release;Platform=Win32"/>
    <MSBuild Projects="$(SOLUTION_NAME).sln" Properties="Configuration=Release;Platform=x64"/>
</Target>

Не забудьте установить зависимость проекта и проверить порядок сборки проекта. Например,

  • Общие библиотеки, созданные до финальных проектов EXE;
  • Unit Test проекты, созданные после соответствующих производственных проектов.

Зависимости проектов

Порядок сборки

MSBuild Properties="Configuration=x;Platform=y" отобразится в Configuration Manager. Не забудьте установить все комбинации конфигурации и платформы:

  • Выбрать (включить флажок) Построить для каждого контекста проекта, если это необходимо,
  • Развертывание столбца не используется.

Ответ 2

Я предлагаю вам настроить конфигурацию Travis как С# (т.е. language: csharp). При этом ваш проект будет интегрирован в среду С# со всеми необходимыми инструментами. Для ваших двух проектов на С++ не обязательно устанавливать обязательные инструменты. Это так же просто, как sudo apt-get install g++ cmake (и другие необходимые пакеты). Вы должны сделать это в разделе install вашего файла .travis.

Примечание. Точный способ установки недостающих пакетов может варьироваться в зависимости от того, используете ли вы инфраструктуру Travis на базе докеров или устаревший.

Затем в разделе script вы можете создавать свои проекты С++ с помощью cmake, а затем создавать свои проекты С#.