Сценарий
У меня есть проект CMake в AppVeyor, в который я пытаюсь добавить сборки Linux.Мои сборки Windows используют генератор CMake в скрипте before_build
для генерации решения Visual Studio, которое построено с build: project
.
. Я хочу вместо этого выполнять сборки Linux с build_script:
.Однако, когда я добавляю скрипт компоновки в матрицу, я получаю сообщение об ошибке:
Фаза компоновки установлена в режим «MSBuild» (по умолчанию), но в Visual Studio проект или файлы решения не найдены вкорневой каталог.Если вы не собираете проект Visual Studio, переключите режим сборки в «Скрипт» и введите свою собственную команду сборки.
Попытки решения
Я попытался добавить build: off
и build: Script
к матрице, однако ни один из этих вариантов не помог.Является ли мой единственный вариант определения сценария для Windows и использования build_script
на обеих платформах?
Пример
Мой appveyor.yml
файл выглядит следующим образом
version: 'build-{build}-{branch}'
image:
- Visual Studio 2017
- Ubuntu
platform:
- x64
configuration:
- Release
- Debug
environment:
APPVEYOR_YML_DISABLE_PS_LINUX: true
install:
- ps: .\install-dependency.ps1
- sh: ./install-dependency.sh
for:
-
matrix:
only:
- image: Ubuntu
before_build:
- mkdir -p build; cd build; cmake -DCMAKE_BUILD_TYPE=%CONFIGURATION% ..
build_script:
- make
-
matrix:
only:
- image: Visual Studio 2017
before_build:
- cmake -G "Visual Studio 15 2017" -A x64 .
build:
project: $(APPVEYOR_PROJECT_NAME).sln
test_script:
- CTest -C %CONFIGURATION%
Сведения о попытках решения
Для справки я попытался указать параметры сборки
matrix:
only:
- image: Ubuntu
build: Script
before_build:
- mkdir -p build; cd build; cmake -DCMAKE_BUILD_TYPE=%CONFIGURATION% ..
Дальнейшие исследования
Я попытался выполнить автономную сборку Linux,все работает как положено, и мне не нужно изменять параметры script
.Возможно, AppVeyor не поддерживает смешивание типов сборки даже с установленной матрицей.
version: 'build-{build}-{branch}'
image: Ubuntu
platform:
- x64
configuration:
- Release
- Debug
install:
- sh: ./install-dependency.sh
before_build:
- mkdir -p build; cd build; cmake -DCMAKE_BUILD_TYPE=%CONFIGURATION% ..
build_script:
- make
test_script:
- ctest -C %CONFIGURATION%