2015-06-20 18:45:25 -04:00
|
|
|
Building with Visual C++, prerequisites
|
|
|
|
=======================================
|
2014-04-05 13:48:48 -04:00
|
|
|
|
2011-01-28 16:19:44 -05:00
|
|
|
This document describes how to compile, build and install curl and libcurl
|
|
|
|
from sources using the Visual C++ build tool. To build with VC++, you will
|
|
|
|
of course have to first install VC++. The minimum required version of
|
2014-04-05 13:48:48 -04:00
|
|
|
VC is 6 (part of Visual Studio 6). However using a more recent version is
|
|
|
|
strongly recommended.
|
2011-01-28 16:19:44 -05:00
|
|
|
|
|
|
|
VC++ is also part of the Windows Platform SDK. You do not have to install
|
|
|
|
the full Visual Studio or Visual C++ if all you want is to build curl.
|
|
|
|
|
2014-04-05 13:48:48 -04:00
|
|
|
The latest Platform SDK can be downloaded freely from:
|
2011-01-28 16:19:44 -05:00
|
|
|
|
2016-02-02 22:16:52 -05:00
|
|
|
https://msdn.microsoft.com/en-us/windows/bb980924
|
2011-01-28 16:19:44 -05:00
|
|
|
|
2014-04-05 13:48:48 -04:00
|
|
|
If you are building with VC6 then you will also need the February 2003
|
|
|
|
Edition of the Platform SDK which can be downloaded from:
|
|
|
|
|
2016-02-02 22:16:52 -05:00
|
|
|
https://www.microsoft.com/en-us/download/details.aspx?id=12261
|
2014-04-05 13:48:48 -04:00
|
|
|
|
2014-12-29 13:57:21 -05:00
|
|
|
If you wish to support zlib, openssl, c-ares, ssh2, you will have to download
|
2011-01-28 16:19:44 -05:00
|
|
|
them separately and copy them to the deps directory as shown below:
|
2017-08-03 07:50:03 -04:00
|
|
|
|
2011-01-28 16:19:44 -05:00
|
|
|
somedirectory\
|
|
|
|
|_curl-src
|
|
|
|
| |_winbuild
|
|
|
|
|
|
|
|
|
|_deps
|
|
|
|
|_ lib
|
|
|
|
|_ include
|
|
|
|
|_ bin
|
|
|
|
|
|
|
|
It is also possible to create the deps directory in some other random
|
|
|
|
places and tell the Makefile its location using the WITH_DEVEL option.
|
|
|
|
|
2017-08-03 07:50:03 -04:00
|
|
|
Building straight from git
|
|
|
|
==========================
|
|
|
|
|
|
|
|
When you check out code git and build it, as opposed from a released source
|
|
|
|
code archive, you need to first run the "buildconf.bat" batch file (present
|
|
|
|
in the source code root directory) to set things up.
|
|
|
|
|
2011-01-28 16:19:44 -05:00
|
|
|
Building with Visual C++
|
|
|
|
========================
|
|
|
|
|
|
|
|
Open a Visual Studio Command prompt or the SDK CMD shell.
|
|
|
|
|
|
|
|
Using the CMD Shell:
|
|
|
|
choose the right environment via the setenv command (see setenv /?)
|
|
|
|
for the full list of options. setenv /xp /x86 /release for example.
|
|
|
|
|
|
|
|
Using the Visual Studio command prompt Shell:
|
|
|
|
Everything is already pre-configured by calling one of the command
|
|
|
|
prompt.
|
|
|
|
|
2017-08-03 07:50:03 -04:00
|
|
|
Once you are in the console, go to the winbuild directory in the Curl
|
2011-01-28 16:19:44 -05:00
|
|
|
sources:
|
|
|
|
cd curl-src\winbuild
|
|
|
|
|
2012-07-08 04:41:53 -04:00
|
|
|
Then you can call nmake /f Makefile.vc with the desired options (see below).
|
2017-08-03 07:50:03 -04:00
|
|
|
The builds will be in the top src directory, builds\ directory, in
|
2011-01-28 16:19:44 -05:00
|
|
|
a directory named using the options given to the nmake call.
|
|
|
|
|
2012-07-08 04:41:53 -04:00
|
|
|
nmake /f Makefile.vc mode=<static or dll> <options>
|
|
|
|
|
2011-01-28 16:19:44 -05:00
|
|
|
where <options> is one or many of:
|
2015-07-21 13:52:43 -04:00
|
|
|
VC=<6,7,8,9,10,11,12,14> - VC versions
|
2011-01-28 16:19:44 -05:00
|
|
|
WITH_DEVEL=<path> - Paths for the development files (SSL, zlib, etc.)
|
2012-07-08 04:41:53 -04:00
|
|
|
Defaults to sibbling directory deps: ../deps
|
2014-05-03 18:48:06 -04:00
|
|
|
Libraries can be fetched at http://windows.php.net/downloads/php-sdk/deps/
|
2011-01-28 16:19:44 -05:00
|
|
|
Uncompress them into the deps folder.
|
|
|
|
WITH_SSL=<dll or static> - Enable OpenSSL support, DLL or static
|
2016-04-21 17:23:49 -04:00
|
|
|
WITH_MBEDTLS=<dll or static> - Enable mbedTLS support, DLL or static
|
2014-12-29 13:57:21 -05:00
|
|
|
WITH_CARES=<dll or static> - Enable c-ares support, DLL or static
|
2012-07-08 04:41:53 -04:00
|
|
|
WITH_ZLIB=<dll or static> - Enable zlib support, DLL or static
|
|
|
|
WITH_SSH2=<dll or static> - Enable libSSH2 support, DLL or static
|
|
|
|
ENABLE_SSPI=<yes or no> - Enable SSPI support, defaults to yes
|
|
|
|
ENABLE_IPV6=<yes or no> - Enable IPv6, defaults to yes
|
|
|
|
ENABLE_IDN=<yes or no> - Enable use of Windows IDN APIs, defaults to yes
|
|
|
|
Requires Windows Vista or later, or installation from:
|
2016-02-02 22:16:52 -05:00
|
|
|
https://www.microsoft.com/downloads/details.aspx?FamilyID=AD6158D7-DDBA-416A-9109-07607425A815
|
2012-07-08 04:41:53 -04:00
|
|
|
ENABLE_WINSSL=<yes or no> - Enable native Windows SSL support, defaults to yes
|
|
|
|
GEN_PDB=<yes or no> - Generate Program Database (debug symbols for release build)
|
2011-01-28 16:19:44 -05:00
|
|
|
DEBUG=<yes or no> - Debug builds
|
2014-05-03 18:48:06 -04:00
|
|
|
MACHINE=<x86 or x64> - Target architecture (default is x86)
|
2015-05-08 01:09:57 -04:00
|
|
|
|
|
|
|
Static linking of Microsoft's C RunTime (CRT):
|
|
|
|
==============================================
|
|
|
|
If you are using mode=static nmake will create and link to the static build of
|
|
|
|
libcurl but *not* the static CRT. If you must you can force nmake to link in
|
|
|
|
the static CRT by passing RTLIBCFG=static. Typically you shouldn't use that
|
|
|
|
option, and nmake will default to the DLL CRT. RTLIBCFG is rarely used and
|
|
|
|
therefore rarely tested. When passing RTLIBCFG for a configuration that was
|
|
|
|
already built but not with that option, or if the option was specified
|
|
|
|
differently, you must destroy the build directory containing the configuration
|
|
|
|
so that nmake can build it from scratch.
|
2015-06-20 18:45:25 -04:00
|
|
|
|
|
|
|
Legacy Windows and SSL
|
|
|
|
======================
|
|
|
|
When you build curl using the build files in this directory the default SSL
|
|
|
|
backend will be WinSSL (Windows SSPI, more specifically Schannel), the native
|
|
|
|
SSL library that comes with the Windows OS. WinSSL in Windows <= XP is not able
|
|
|
|
to connect to servers that no longer support the legacy handshakes and
|
|
|
|
algorithms used by those versions. If you will be using curl in one of those
|
|
|
|
earlier versions of Windows you should choose another SSL backend like OpenSSL.
|