bitcoin/secp256k1 — pull request #66 by evoskuil (2014-09-29 01:09:18+00:00)
Title: Visual Studio 2013 build configuration

# Visual Studio 2013 build configuration
*Components are organized as follows:*

#### builds/

Parent directory for builds by system. The organization is pattered after [ZeroMQ](https://github.com/zeromq/libzmq/tree/master/builds).

#### builds/msvc/

Directory for MS Visual C/C++ builds. Contains resources that are shared across solutions, such as DLL version resource files.

#### builds/msvc/build/

Build scripts for command line builds execution. `buildbase.bat` is a reusable build template. `buildall.bat` is a simple invocation wrapper for the Visual Studio solutions of interest.

#### builds/msvc/properties/

Properties files that define typical build configurations. These are referenced by project files as follows:

```xml

```

Typically `.vcxproj` files are filled with large numbers of redundant and often inconsitent configuration. The proper use of `.props` files in this manner allows this confustion to be entirely eliminated. These files, along with `buildbase.bat` are maintained in a [dedicated repository](https://github.com/evoskuil/visual-studio-template/blob/master/README.md) and utilized in a number of [other projects](https://github.com/evoskuil?tab=repositories).

#### builds/msvc/vs2013/

Solution directory containing Visual Studio 2013 solution file (`.sln) and subdirectories for each project. Sibling directories for VS2012 and VS2010 can be generated from the VS2013 files.

A solution is a set of projects. Projects correspond to build instructions for a given binary output, typically a library (`.dll` and/or `.lib`) or executable (`.exe`).

The directory contains import files that expose options and related user interface to dependent external projects, specifically `secp256k1.import.props` and `secp256k1.import.xml`. The bench and test projects also reference these imports as they each depend on the main library.

The solution directory contains the following sub directories for `secpk256k1` projects:

#### builds/msvc/vs2013/secp256k1
#### builds/msvc/vs2013/secp256k1_bench
#### builds/msvc/vs2013/secp256k1_tests

* `.vcxproj` contains the source file listing and standard build configurations
* `.filters` organizes source files in the IDE
* `.config` references the NuGet packages on which the project depends (GMP/MPIR and OpenSSL)
* `.props` contains all of the custom configuration for the build
* `.xml` instructs the IDE to create presention for options exposed by the project

Note that the build will not complete until compilation issues in the source files are resolved. The build system is being pulled first in order to (1) facilitate that process, and (2) start with a 'test' that defines success by failing until other work is complete.