Page 1 of 1

Trying to compile Exodus

Posted: Sun Mar 10, 2019 8:25 pm
by tryphon
I suck terribly when it comes to configure a compilation chain, and thus, I failed at compiling Exodus.

Here are the instructions from :
To setup your development environment, do the following:

Download and install Visual Studio 2013 Community Edition (ISO Image:
Download and install the Windows SDK (Web installer only)
Download and install the VisualHG plugin for Visual Studio
Open Visual Studio and select the "Tools -> Options" menu item
Select "Source Control -> Plug-in Selection" from the tree control on the panel
Choose "VisualHG" from the combobox as the current source control plugin, and press ok.
All done. Took me 3 hours...
Under the "expat" directory, expat 2.1.0 (Direct Link: ... 1.0.tar.gz)
Under the "libjpeg" directory, libjpeg 9a (Direct Link:
Under the "libpng" directory, libpng 1.6.12 (Direct Link:
Under the "libtiff" directory, libtiff 4.0.3 (Direct Link:
Under the "zlib" directory, zlib 1.2.8 (Direct Link:
If you want to build the documentation, under the "htmlhelp" directory, Microsoft HTML Help Workshop (Direct Link:
If you want to build the unit tests, under the "catch" directory, Catch (Direct link -
All done. But some links don't work, so I googled the files. I may have some slightly different, it may prove important later...
For each compressed file you've downloaded, you now need to extract each one directly into the folder it's in. IE, if the archive name was "", and it contained a compressed folder called "SomeFolder", after you extract, you should have SomeFolder sitting in the same directory as
At this step I was a little confused : in the Exodus/Third dir, I already have catch, expat, etc. subdirs, mostly empty.

Let's take zlib. The zip file I downloaded is named Must I copy its content in a subdir named zlib128, or in the already existent named simply zlib ?

I chosed the second solution (because in the 1st, I did not know what to do with the original 'zlib' dir and the files it contained). May be I was wrong.
With your development environment setup, you're ready to compile Exodus. This can be done on the command line with MSBuild, but the easiest way is within Visual Studio. To compile Exodus, do the following.

Open "ThirdPartyLibraries.sln" from the root of the Exodus repository in Visual Studio
Select "Build -> Batch Build" from the main menu
Click "Select All", then "Build". This will build all the different platform and build configuration variations of the third libraries, which makes things simpler.
This step failed miserably. I had 60 Errors, mainly :
Error 1 error MSB8020: The build tools for v141 (Platform Toolset = 'v141') cannot be found. To build using the v141 build tools, please install v141 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Upgrade Solution...". C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets 64 5 libjpeg
and the same for other libraries...

Re: Trying to compile Exodus

Posted: Mon Mar 11, 2019 11:25 am
by Nemesis
Sorry, that's my bad. I upgraded the toolchain with the latest release, but I forgot to update those instructions. Exodus now requires VS2017 to compile. You can get that from the main Visual Studio download page at Note that VS2017 has a fairly complex installer. You'll need to ensure you've got the right options selected for "desktop" C++ application development. Pay particular attention to the "Windows SDK". You used to simply be able to target the "latest available" version that was installed and have it work, but Microsoft broke that in recent years and things have got a lot more complicated. Although Exodus can compile against any version of the Windows SDK, you need to install the "10.0.16299" version for it to be found automatically. That version of the SDK will be an option buried in the custom install settings in the VS2017 installer. You don't need MFC/ATL support for Exodus, but I'd recommend installing it anyway.

As for the third party libraries, that list is also old. The up to date set is listed in the "build instructions.txt" file that's checked into the "Third" directory in the repo. You just need the five main libraries listed, not the ones under the "testing" and "help" sections. What you want to do is place each downloaded file into the relevant sub-directories that exist, and extract each one in-place. IE, when you extract "expat-2.1.0.tar.gz", you should end up with a "Third\expat\expat-2.1.0" folder, under which you'll find its files like "CMake.README".

With the updated Visual Studio version, and the newer third party library versions, you should find it builds without trouble.

Re: Trying to compile Exodus

Posted: Wed Mar 13, 2019 8:04 pm
by tryphon
Ah ah :D

I hate you :)

It took me 5 hours to install VS2013, I have no more room on my HDD. I'm uninstalling everything, and try again :mrgreen:

Re: Trying to compile Exodus

Posted: Thu Mar 14, 2019 10:51 am
by Nemesis
Sorry! Unfortunately the VS2017 installer is even more of a monster, but it'll only download what you select. If your downloads take awhile, you might want to be conservative and turn off stuff you don't need to save some time. If space is an issue, you'll also need to be selective. If you download everything, it's over 40GB before you install it. You only need things related to desktop C++ development (non-UWP) with the 10.0.16299 Windows SDK.

Re: Trying to compile Exodus

Posted: Thu Mar 14, 2019 6:52 pm
by tryphon
Thank you :)

Re: Trying to compile Exodus

Posted: Tue Dec 22, 2020 1:10 am
by OrangyTang
Sorry to resurrect an old thead, but I'm hitting the same snag - the latest source seems to have broken links for zlib and Catch. Are they available somewhere?

I found an archived version of zlib 1.2.8, but am unsure what the nested directory should be called. Unzipping it directly gives Third/zlib/zlib-1.2.8 but I'm still getting build errors with missing zlibd.lib so that must be wrong.

Edit: zlib 1.2.8 works, I'd just failed to build the ThirdPartyLibraries solution because I'm an idiot. :)