我需要找到Microsoft的编译器cl.exe,用于我的项目构建测试,但似乎无法在Visual Studio 15映像中找到它。我已经看过许多github托管的appveyor.yml文件以寻找灵感(比如https://github.com/frankmorgner/openpace/blob/master/appveyor.yml),但没有什么对我有用。我可以看到llvm编译器,但我真的想要微软的。在Appveyor中获取Microsoft C编译器的最终方法是什么?
答案 0 :(得分:0)
如果你在任何脚本阶段添加这样的东西(比如说install
阶段),你会看到一大堆这些文件
cd c:\
dir /s cl.exe
这是我输出的一小部分:
Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
08/25/2016 11:13 PM 190,600 cl.exe
1 File(s) 190,600 bytes
Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64
08/25/2016 11:06 PM 229,000 cl.exe
1 File(s) 229,000 bytes
Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_arm
08/25/2016 11:06 PM 225,568 cl.exe
1 File(s) 225,568 bytes
Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_x86
08/25/2016 11:06 PM 229,664 cl.exe
1 File(s) 229,664 bytes
Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64
08/25/2016 11:13 PM 190,752 cl.exe
1 File(s) 190,752 bytes
Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_arm
答案 1 :(得分:0)
该方法正在运行vcvarsall.bat
。
这是将正确的编译器添加到路径的最可靠方法。
(我也使用它来设置合适的环境以使用clang-cl进行编译。)
示例AppVeyor.yml:
image:
- Visual Studio 2015
- Visual Studio 2017
platform:
- x86
- x64
environment:
VCVAR2015: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'
VCVAR2017: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat'
before_build:
- ps: |
# ...example script to set the proper flags for vcvarsall ...
# syntax: vcvarsall.bat [architecture] [platform_type] [winsdk_version] [-vcvars_ver=vcversion]
$Architecture = $env:PLATFORM # simplified, works for x86 and x64
if ("$env:APPVEYOR_BUILD_WORKER_IMAGE" -eq "Visual Studio 2015") {
$env:VCVARSALL = "`"$env:VCVAR2015`" $Architecture"
} else {
$env:VCVARSALL = "`"$env:VCVAR2017`" $Architecture"
}
- call %VCVARSALL%
build_script:
- cl
- link
也可以调用特定版本,例如vcvarsamd64_x86.bat
,但我更喜欢在脚本中设置标志。