Ian Burgmyer cbbbdcd890 Clipboard Handler Reorganization (#122) 6 years ago
..
Core.vcxproj cbbbdcd890 Clipboard Handler Reorganization (#122) 6 years ago
Core.vcxproj.filters cbbbdcd890 Clipboard Handler Reorganization (#122) 6 years ago
Editor.vcxproj cbbbdcd890 Clipboard Handler Reorganization (#122) 6 years ago
Editor.vcxproj.filters cbbbdcd890 Clipboard Handler Reorganization (#122) 6 years ago
MZXRun.vcxproj be907671d3 Rebuilt MSVC project files from scratch. 7 years ago
MZXRun.vcxproj.filters be907671d3 Rebuilt MSVC project files from scratch. 7 years ago
MegaZeux.sln be907671d3 Rebuilt MSVC project files from scratch. 7 years ago
MegaZeux.vcxproj f9ddddc61c Added the automated distribution creation for Release builds to the new project. 7 years ago
MegaZeux.vcxproj.filters be907671d3 Rebuilt MSVC project files from scratch. 7 years ago
README.txt 96c277928e MSVC 2017 Support (#101) 7 years ago
config.h cbbbdcd890 Clipboard Handler Reorganization (#122) 6 years ago
dirent.h 28c74557b1 Upgrade MSVC support to Visual Studio 13 level. 11 years ago
msvc.h be907671d3 Rebuilt MSVC project files from scratch. 7 years ago
update_version.cmd cbbbdcd890 Clipboard Handler Reorganization (#122) 6 years ago

README.txt

BUILDING MEGAZEUX WITH MICROSOFT VISUAL STUDIO

This document covers the rationale and caveats regarding MegaZeux
compilation with Microsoft's Visual C++ 2017 compiler (henceforth MSVC).

RATIONALE

The primary advantage of compiler portability is the idea that program
correctness may be enriched, by leveraging the different advantages of
different compilers. This has certainly been true of the ports to 64bit
platforms, and will hopefully be true of compiler diversity.

Porting to MSVC increases MegaZeux's compiler portability.

VISUAL STUDIO LIMITATIONS AND WORKAROUNDS

Microsoft's Visual C++ compiler has improved significantly in recent years,
undoubtedly due to its rivalry with the free GCC compiler. Compatibility with
UNIX and POSIX APIs has matured to the point where much software depending on
these APIs can be compiled without issue. MegaZeux is one such application.

However, MSVC has the following constraints:

- No UNIX "dirent" API support
Fixed using Toni Ronkko's dirent.h implementation for MSVC
This header is BSD licensed and compatible with MegaZeux's GPL license
See "dirent.h" in this directory

- No unistd.h
MSVC internally defines most of this anyway, so we simply do not
#include it in MSVC builds.


OPENING THE PROJECT

The pre-built project files can be found in this directory as "MegaZeux.sln".
The solution may not always work, as it is not tested often. At the time of
writing, Visual Studio 2017 was the minimum working version required to open
it. It may work using Visual Studio 2013 and/or 2015, but those versions have
not been tested. You must also build MZX's dependencies into a "Deps" folder
alongside the solution, or use these prebuilt Deps:

https://github.com/AliceLR/megazeux/raw/master/scripts/deps/msvc.zip

There may be instability with the MSVC binary that is not present in the GCC
builds. If you find such instability, please report it (fixes are also
welcome).

--ajs (20130711) / spectere (20171123)