Addresses issue #634. (#866)

* Update with instructions to build under Visual Studio

Fixes Issue #634.

I spent 3 days trying to build this library under Visual Studio 2017, only to discover on has to link to `Shlwapi.lib`.

Became so frustrated with the docs that I added full build instructions for Visual Studio 2015, 2017 and Intel Comiler 2015 and 2019.

* Update headings
This commit is contained in:
sharpe5 2019-09-16 09:05:05 +01:00 committed by Dominic Hamon
parent ef7d51c8eb
commit bf4f2ea0bd
1 changed files with 33 additions and 3 deletions

View File

@ -52,6 +52,8 @@ The following minimum versions are required to build the library:
* Visual Studio 14 2015 * Visual Studio 14 2015
* Intel 2015 Update 1 * Intel 2015 Update 1
See [Platform-Specific Build Instructions](#platform-specific-build-instructions).
## Installation ## Installation
This describes the installation process using cmake. As pre-requisites, you'll This describes the installation process using cmake. As pre-requisites, you'll
@ -190,7 +192,9 @@ Alternatively, link against the `benchmark_main` library and remove
The compiled executable will run all benchmarks by default. Pass the `--help` The compiled executable will run all benchmarks by default. Pass the `--help`
flag for option information or see the guide below. flag for option information or see the guide below.
### Platform-specific instructions ## Platform Specific Build Instructions
### Building with GCC
When the library is built using GCC it is necessary to link with the pthread When the library is built using GCC it is necessary to link with the pthread
library due to how GCC implements `std::thread`. Failing to link to pthread will library due to how GCC implements `std::thread`. Failing to link to pthread will
@ -200,8 +204,34 @@ can link to pthread by adding `-pthread` to your linker command. Note, you can
also use `-lpthread`, but there are potential issues with ordering of command also use `-lpthread`, but there are potential issues with ordering of command
line parameters if you use that. line parameters if you use that.
If you're running benchmarks on Windows, the shlwapi library (`-lshlwapi`) is ### Building with Visual Studio 2015 or 2017
also required.
The `shlwapi` library (`-lshlwapi`) is required to support a call to `CPUInfo` which reads the registry. Either add `shlwapi.lib` under `[ Configuration Properties > Linker > Input ]`, or use the following:
```
// Alternatively, can add libraries using linker options.
#ifdef _WIN32
#pragma comment ( lib, "Shlwapi.lib" )
#ifdef _DEBUG
#pragma comment ( lib, "benchmarkd.lib" )
#else
#pragma comment ( lib, "benchmark.lib" )
#endif
#endif
```
Can also use the graphical version of CMake:
* Open `CMake GUI`.
* Under `Where to build the binaries`, same path as source plus `build`.
* Under `CMAKE_INSTALL_PREFIX`, same path as source plus `install`.
* Click `Configure`, `Generate`, `Open Project`.
* If build fails, try deleting entire directory and starting again, or unticking options to build less.
### Building with Intel 2015 Update 1 or Intel System Studio Update 4
See instructions for building with Visual Studio. Once built, right click on the solution and change the build to Intel.
### Building on Solaris
If you're running benchmarks on solaris, you'll want the kstat library linked in If you're running benchmarks on solaris, you'll want the kstat library linked in
too (`-lkstat`). too (`-lkstat`).