This flag makes it so the MSVC runtime libraries are statically linked. This avoids needing Windows users to have these libraries installed. Apparently /MT stands for "MultiThreaded", and there's a bit of a history there where originally by default you could only have a single-threaded library, and then the multi-threaded flags were added in later. First I tried doing target_compile_options on VVVVVV, but then got a linker error. Then I tried doing add_compile_options because I figured /MT had to be applied everywhere, and it seemed to work, but it still linked to the runtime libraries. Apparently it was being overridden. Then I tried target_compile_options again but this time did it to everything, and that linked correctly and also removed the runtime dependency. I would've tried using the MSVC_RUNTIME_LIBRARY property - along with the CMP0091 policy - but those were only introduced in CMake 3.15. You can verify that a binary is built without dependencies by installing LLVM and running llvm-readobj --needed-libs path/to/binary. This is the output for a binary with runtime dependencies: infoteddy@fedorarune ~/d llvm-readobj --needed-libs VVVVVV.exe File: VVVVVV.exe Format: COFF-i386 Arch: i386 AddressSize: 32bit NeededLibraries [ ADVAPI32.dll KERNEL32.dll MSVCP140.dll SDL2.dll SHELL32.dll USER32.dll VCRUNTIME140.dll api-ms-win-crt-heap-l1-1-0.dll api-ms-win-crt-locale-l1-1-0.dll api-ms-win-crt-math-l1-1-0.dll api-ms-win-crt-runtime-l1-1-0.dll api-ms-win-crt-stdio-l1-1-0.dll api-ms-win-crt-string-l1-1-0.dll api-ms-win-crt-time-l1-1-0.dll api-ms-win-crt-utility-l1-1-0.dll ] And this is the output for a binary with those dependencies having been statically-linked in: infoteddy@fedorarune ~/d llvm-readobj --needed-libs VVVVVV.exe File: VVVVVV.exe Format: COFF-i386 Arch: i386 AddressSize: 32bit NeededLibraries [ ADVAPI32.dll KERNEL32.dll SDL2.dll SHELL32.dll USER32.dll ]
|5 days ago|
|.github||2 months ago|
|desktop_version||5 days ago|
|mobile_version||2 years ago|
|third_party||1 month ago|
|tools||3 years ago|
|.gitattributes||3 years ago|
|.gitmodules||3 months ago|
|LICENSE.md||3 years ago|
|License exceptions.md||10 months ago|
|README.md||3 years ago|
This is the source code to VVVVVV, version 2.0+. For more context about this release, see the announcement on Terry's blog!
VVVVVV's source code is made available under a custom license. See LICENSE.md for more details.
In general, if you're interested in creating something that falls outside the license terms, get in touch with Terry and we'll talk about it!
- Created by Terry Cavanagh
- Room Names by Bennett Foddy
- Music by Magnus Pålsson
- Metal Soundtrack by FamilyJules
- 2.0 Update (C++ Port) by Simon Roth
- 2.2 Update (SDL2/PhysicsFS/Steamworks port) by Ethan Lee
- Beta Testing by Sam Kaplan and Pauli Kohberger
- Ending Picture by Pauli Kohberger
There are two versions of the VVVVVV source code available - the desktop version (based on the C++ port, and currently live on Steam), and the mobile version (based on a fork of the original flash source code, and currently live on iOS and Android).