MultiMarkdown v. 5.0 Released

11/15/2015 10:48:20

MultiMarkdown v5 is basically the same code as v4, but the project has been restructured:

  • It is built using my c-template project boilerplate – I welcome suggestions and ideas for improvement about this.
  • It is designed with the CMake build system, rather than just a Makefile

Why switch to CMake?

In early 2014, a user of MMD introduced me to the CMake build system. I looked at it briefly, but didn’t do anything with it. Later on, I looked at it more in depth and created a parallel branch after 4.6. This would allow me to experiment with CMake without breaking anything else in the master branch.

CMake isn’t perfect by any means, but it does allow for some interesting things:

  • Automatically generate GUI installers for OS X and Windows, as well as zip files for *nix. I have not looked into using CMake to build .deb packages, but that might be possible as well. My old system could generate GUI installers for Windows and OS X, but it was a complex process that required a lot of manual processing. This is much more amenable to automation.
  • An improved organization structure for various tests, including Valgrind testing. The old system was getting rather messy.
  • A templating system that better allows me to synchronize version, and other, information in code, documentation, and READMEs
  • Automatic generation of project files for Xcode, Visual Studio, and alternative build systems beyond make
  • An opportunity to reorganize my code directory hierarchy
  • The option to start adding unit test code to the source. This probably won’t happen, as it would be too much work. But it is possible.

The biggest problem is that this means that anyone wishing to compile the source will need to install CMake. This isn’t hard, but it is an extra step.

As a temporary measure, you can use the make deprecated command to use a simplified make recipe to compile a binary of MultiMarkdown for the current machine. I don’t recommend this approach, but it should work in a pinch until you can upgrade your machine to support cmake.

I welcome feedback on this decision, but please note – “I don’t like it” or “bring back the old way” comments will be ignored. Please send meaningful criticism or suggestions.

Perhaps an approach if others want to contribute will be to do the reverse of what I did before – create a make branch that includes a modified Makefile designed to be used without CMake?

Additionally, the old Makefile had grown over time to include some tricks that users of various systems required. I have tested the CMake system on OS X, Ubuntu and Debian Linux, and MinGW on Ubuntu. I welcome suggestions for improvements to the CMake configuration.

Where is it?

The MultiMarkdown v5 source is on github:

https://github.com/fletcher/MultiMarkdown-5

Pre-compiled binaries are available on the Github project release page:

https://github.com/fletcher/MultiMarkdown-5/releases

The User’s Guide link is also updated to the new project:

http://fletcher.github.io/MultiMarkdown-5/

Similar Pages