我在AppVeyor上有一个CMake项目,我正在尝试将Linux Build添加到其中。我的Windows版本在before_build
脚本中使用CMake生成器来生成由build: project
构建的Visual Studio解决方案。
我想改用build_script:
执行Linux构建。但是,当我向矩阵添加构建脚本时,出现错误:
构建阶段设置为“ 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%
答案 0 :(得分:0)
尽管我还没有找到问题的解决方案,但是在这两个平台上都可以构建解决方法。对于Windows,我可以使用default MSBuild脚本<div dir="rtl">
<textarea></textarea>
</div>
。
msbuild <project> /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"