Some time ago GitHub has introduced an alternative version of Windows virtual environment. One of those is possibly untested in this repo. Let's test both of them. Audit tasks and side tracks are still using "windows-latest" because we don't particularly care about them. However, main tests should be run against both versions. You can find currently supported environments here: https://github.com/actions/virtual-environments/
msvc-dev-cmd
GitHub Action for configuring Developer Command Prompt for Microsoft Visual C++.
This sets up the environment for compiling C/C++ code from command line.
Supports Windows. Does nothing on Linux and macOS.
Inputs
arch– target architecture- native compilation:
x64(default) or its synonyms:amd64,win64x86or its synonyms:win32
- cross-compilation:
x86_amd64,x86_arm,x86_arm64,amd64_x86,amd64_arm,amd64_arm64
- native compilation:
sdk– Windows SDK to use- do not specify to use the default SDK
- or specify full Windows 10 SDK number (e.g,
10.0.10240.0) - or write
8.1to use Windows 8.1 SDK
toolset– select VC++ compiler toolset version- do not specify to use the default toolset
14.0for VC++ 2015 Compiler Toolset14.XXfor the latest 14.XX toolset installed (e.g,14.11)14.XX.YYYYYfor a specific full version number (e.g,14.11.25503)
uwp– settrueto build for Universal Windows Platform (i.e., for Windows Store)spectre– settrueto use Visual Studio libraries with Spectre mitigations
Example usage
jobs:
test:
- uses: actions/checkout@v1
- uses: ilammy/msvc-dev-cmd@v1
- name: Build something requiring CL.EXE
run: |
cmake -G "NMake Makefiles" .
nmake
# ...
Caveats
Name conflicts with shell: bash
Using shell: bash in Actions may shadow some of the paths added by MSVC.
In particular, link.exe (Microsoft C linker) is prone to be shadowed by /usr/bin/link (GNU filesystem link tool).
Unfortunately, this happens because GitHub Actions unconditionally prepend GNU paths when shell: bash is used,
on top of any paths set by msvc-dev-cmd, every time at the start of each new step.
Hence, there aren't many non-destructive options here.
If you experience compilation errors where link complains about unreasonable command-line arguments,
“extra operand something-something” – that's probably it.
Recommended workaround is to remove /usr/bin/link if that interferes with your builds.
If this is not acceptable, please file an issue, then we'll figure out something better.
License
MIT, see LICENSE.