为什么AppVeyor对VS2015镜像使用VS2010工具?
Why does AppVeyor use VS2010 tools for VS2015 image?
我们是一个 C++ 库。我们正在努力使用 AppVeyor 和 Visual Studio 使用 x64 构建构建图像。 Visual Studio 为 Win32 构建映像遇到同样的问题,但由于某些 [未知] 原因,它们成功完成。
我们正在尝试使用 Visual Studio 2015 构建映像(以及其他):
当我们检查命令行时,我们似乎正在使用 Visual Studio 2010 编译器 (Visual Studio 10.0 is VS2010):
我们的 AppVeyor 配置文件位于 Noloader GitHub | .appveyor.yml。也如下所示。
一切都是通过.appveyor.yml
驱动的。没有影响事物的隐藏设置(或者我们不相信)。我们想要 .appveyor.yml
中的所有内容,以便人们可以克隆它和 "just work" 的东西。
项目文件位于 GitHub 中 cryptest.vcxproj
and cryptlib.vcxproj
. The *.vcxproj files use a hard-coded $(DefaultPlatformToolset)
as suggested by @stinj。 (编辑:DefaultPlatformToolset
- 不再。我们完全删除了 DefaultPlatformToolset
和 PlatformToolset
)。
项目的构建结果位于 Noloader AppVeyor | cryptopp。它是屏幕截图的来源。
为什么使用了错误的构建工具,我们该如何解决?
当我避免 $(DefaultPlatformToolset)
并对平台工具集的值进行硬编码时,它会导致另一个错误。例如,下面是 Visual Studio 2015 构建映像。当工具集版本设置为 v140
时,它会死掉,这是 VS2015 版本值。真是糊涂了。
(Commit ac513c06f8c8 最终被还原,因为它破坏了比以前更糟糕的东西)。
当我们完全删除 VCXPROJ 文件中 PlatformToolset
和 DefaultPlatformToolset
的所有痕迹时,会导致相同的错误。以下是来自 Visual Studio 2017 构建图像。
version: 1.0.{build}
clone_depth: 3
configuration:
- Debug
- Release
platform:
- Win32
- x64
image:
- Visual Studio 2017
- Visual Studio 2015
- Visual Studio 2013
build: off
test_script:
- cmd: >-
msbuild /t:Build /p:platform=%platform%;configuration=%configuration% cryptlib.vcxproj
msbuild /t:Build /p:platform=%platform%;configuration=%configuration% cryptest.vcxproj
msbuild /t:CopyCryptestToRoot cryptest.vcxproj
cryptest.exe v
cryptest.exe tv all
matrix:
exclude:
# - platform: x64
# configuration: Debug
# - platform: x64
# configuration: Release
- image: Visual Studio 2010
- image: Visual Studio 2017
notifications:
- provider: Email
to:
- cryptopp-build@googlegroups.com
on_build_success: true
on_build_failure: true
以下是我的工作方式:
在两个 .vcxproj
文件中设置 ToolsVersion="$(ToolsVersion)"
和 <PlatformToolset>$(TOOLSET)</PlatformToolset>
添加环境变量 TOOLSET
,值为 v140
和 ToolsVersion
,值为 14.0
要使用不同的变量实现您需要的所有组合,您可以使用 build matrix and avoid combinations you do not need with exclude configuration from the matrix。
更新:矩阵样本
image:
- Visual Studio 2015
- Visual Studio 2013
platform:
- x64
- x86
environment:
matrix:
- TOOLSET: v140
ToolsVersion: 14.0
- TOOLSET: v100
ToolsVersion: 4.0
matrix:
exclude:
- image: Visual Studio 2015
TOOLSET: v100
ToolsVersion: 4.0
- image: Visual Studio 2013
TOOLSET: v140
ToolsVersion: 14.0
我们是一个 C++ 库。我们正在努力使用 AppVeyor 和 Visual Studio 使用 x64 构建构建图像。 Visual Studio 为 Win32 构建映像遇到同样的问题,但由于某些 [未知] 原因,它们成功完成。
我们正在尝试使用 Visual Studio 2015 构建映像(以及其他):
当我们检查命令行时,我们似乎正在使用 Visual Studio 2010 编译器 (Visual Studio 10.0 is VS2010):
我们的 AppVeyor 配置文件位于 Noloader GitHub | .appveyor.yml。也如下所示。
一切都是通过.appveyor.yml
驱动的。没有影响事物的隐藏设置(或者我们不相信)。我们想要 .appveyor.yml
中的所有内容,以便人们可以克隆它和 "just work" 的东西。
项目文件位于 GitHub 中 cryptest.vcxproj
and cryptlib.vcxproj
. The *.vcxproj files use a hard-coded $(DefaultPlatformToolset)
as suggested by @stinj。 (编辑:DefaultPlatformToolset
- 不再。我们完全删除了 DefaultPlatformToolset
和 PlatformToolset
)。
项目的构建结果位于 Noloader AppVeyor | cryptopp。它是屏幕截图的来源。
为什么使用了错误的构建工具,我们该如何解决?
当我避免 $(DefaultPlatformToolset)
并对平台工具集的值进行硬编码时,它会导致另一个错误。例如,下面是 Visual Studio 2015 构建映像。当工具集版本设置为 v140
时,它会死掉,这是 VS2015 版本值。真是糊涂了。
(Commit ac513c06f8c8 最终被还原,因为它破坏了比以前更糟糕的东西)。
当我们完全删除 VCXPROJ 文件中 PlatformToolset
和 DefaultPlatformToolset
的所有痕迹时,会导致相同的错误。以下是来自 Visual Studio 2017 构建图像。
version: 1.0.{build}
clone_depth: 3
configuration:
- Debug
- Release
platform:
- Win32
- x64
image:
- Visual Studio 2017
- Visual Studio 2015
- Visual Studio 2013
build: off
test_script:
- cmd: >-
msbuild /t:Build /p:platform=%platform%;configuration=%configuration% cryptlib.vcxproj
msbuild /t:Build /p:platform=%platform%;configuration=%configuration% cryptest.vcxproj
msbuild /t:CopyCryptestToRoot cryptest.vcxproj
cryptest.exe v
cryptest.exe tv all
matrix:
exclude:
# - platform: x64
# configuration: Debug
# - platform: x64
# configuration: Release
- image: Visual Studio 2010
- image: Visual Studio 2017
notifications:
- provider: Email
to:
- cryptopp-build@googlegroups.com
on_build_success: true
on_build_failure: true
以下是我的工作方式:
在两个
.vcxproj
文件中设置ToolsVersion="$(ToolsVersion)"
和<PlatformToolset>$(TOOLSET)</PlatformToolset>
添加环境变量
TOOLSET
,值为v140
和ToolsVersion
,值为14.0
要使用不同的变量实现您需要的所有组合,您可以使用 build matrix and avoid combinations you do not need with exclude configuration from the matrix。
更新:矩阵样本
image:
- Visual Studio 2015
- Visual Studio 2013
platform:
- x64
- x86
environment:
matrix:
- TOOLSET: v140
ToolsVersion: 14.0
- TOOLSET: v100
ToolsVersion: 4.0
matrix:
exclude:
- image: Visual Studio 2015
TOOLSET: v100
ToolsVersion: 4.0
- image: Visual Studio 2013
TOOLSET: v140
ToolsVersion: 14.0