i2pd/docs/build_notes_windows.md
hagen 710439e83c * cleanup README
* move all docs to single dir
2015-12-01 00:06:00 +00:00

3.0 KiB

Building i2pd for Windows

!!! WARNING This file may be outdated.

Requirements for building:

  • Visual Studio 2013 (tested with VS2013 Update 1, Update 3, and Update 4)
  • Boost (tested with 1.56, 1.57, and 1.58)
  • Crypto++ (tested with 5.6.2)

Building Boost (32-bit)

Open a Visual Studio x86 command prompt and run the following:

cd C:\path\to\boost\sources
bootstrap
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\Win32 install --with-filesystem --with-program_options --with-regex --with-date_time

Building Boost (64-bit)

Open a Visual Studio x64 command prompt and run the following:

cd C:\path\to\boost\sources
bootstrap
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install --with-filesystem --with-program_options --with-regex --with-date_time

After Boost is compiled, set the environment variable BOOST to the directory Boost was installed to. If you followed the instructions outlined here, you should set it to C:\Boost. Additionally, set the BOOSTVER variable to the version of Boost that you're using, but instead of a '.' use a '_'. For example, I have BOOSTVER set to 1_58.

Building Crypto++

  • Open the crypttest Solution in VS2013
  • Visual Studio will ask to update the Solution/Project. Allow it.
  • Build the cryptopp project, both the Debug and Release targets and for both Win32 and x64.
  • Create a folder called cryptopp in the crypto++ source directory, then copy the header files to this new directory.
  • Set the CRYPTOPP environment variable pointing to the Crypto++ source directory.

Building i2pd

Prep work

I strongly advise setting up your own INCLUDES and LIBS instead of relying on the settings in the i2pd project file. By using your own settings, if the i2pd devs change the paths in the project file, your builds will still work.

To do this, create or edit the file %localappdata%\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.

For comparison, my file is reproduced below:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <LibraryPath>$(CRYPTOPP)\$(Platform)\Output\$(Configuration);$(BOOST)\lib\$(Platform);$(LibraryPath)</LibraryPath>
    <IncludePath>$(CRYPTOPP);$(BOOST)\include\boost-$(BOOSTVER);$(IncludePath)</IncludePath>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup />
</Project>

If you want to build x64 binaries as well, you'll want to edit or create the file %localappdata%\Microsoft\MSBuild\v4.0\Microsoft.Cpp.x64.user. If you followed the steps outlined earlier you can copy (or link) the win32 file to the x64 one.

Anti-Climatic End

After following the above instructions, you'll be able to build Debug Win32, Debug x64, Release Win32, and Release x64 i2pd binaries.