lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 1 | Building with Visual C++, prerequisites
|
| 2 | =======================================
|
| 3 |
|
| 4 | This document describes how to compile, build and install curl and libcurl
|
| 5 | from sources using the Visual C++ build tool. To build with VC++, you will
|
| 6 | of course have to first install VC++. The minimum required version of
|
| 7 | VC is 6 (part of Visual Studio 6). However using a more recent version is
|
| 8 | strongly recommended.
|
| 9 |
|
| 10 | VC++ is also part of the Windows Platform SDK. You do not have to install
|
| 11 | the full Visual Studio or Visual C++ if all you want is to build curl.
|
| 12 |
|
| 13 | The latest Platform SDK can be downloaded freely from:
|
| 14 |
|
| 15 | https://msdn.microsoft.com/en-us/windows/bb980924
|
| 16 |
|
| 17 | If you are building with VC6 then you will also need the February 2003
|
| 18 | Edition of the Platform SDK which can be downloaded from:
|
| 19 |
|
| 20 | https://www.microsoft.com/en-us/download/details.aspx?id=12261
|
| 21 |
|
| 22 | If you wish to support zlib, openssl, c-ares, ssh2, you will have to download
|
| 23 | them separately and copy them to the deps directory as shown below:
|
| 24 |
|
| 25 | somedirectory\
|
| 26 | |_curl-src
|
| 27 | | |_winbuild
|
| 28 | |
|
| 29 | |_deps
|
| 30 | |_ lib
|
| 31 | |_ include
|
| 32 | |_ bin
|
| 33 |
|
| 34 | It is also possible to create the deps directory in some other random
|
| 35 | places and tell the Makefile its location using the WITH_DEVEL option.
|
| 36 |
|
| 37 | Building with Visual C++
|
| 38 | ========================
|
| 39 |
|
| 40 | Open a Visual Studio Command prompt or the SDK CMD shell.
|
| 41 |
|
| 42 | Using the CMD Shell:
|
| 43 | choose the right environment via the setenv command (see setenv /?)
|
| 44 | for the full list of options. setenv /xp /x86 /release for example.
|
| 45 |
|
| 46 | Using the Visual Studio command prompt Shell:
|
| 47 | Everything is already pre-configured by calling one of the command
|
| 48 | prompt.
|
| 49 |
|
| 50 | Once you are in the console, go to the winbuild directory in the Curl
|
| 51 | sources:
|
| 52 | cd curl-src\winbuild
|
| 53 |
|
| 54 | Then you can call nmake /f Makefile.vc with the desired options (see below).
|
| 55 | The builds will be in the top src directory, builds\ directory, in
|
| 56 | a directory named using the options given to the nmake call.
|
| 57 |
|
| 58 | nmake /f Makefile.vc mode=<static or dll> <options>
|
| 59 |
|
| 60 | where <options> is one or many of:
|
| 61 | VC=<6,7,8,9,10,11,12,14> - VC versions
|
| 62 | WITH_DEVEL=<path> - Paths for the development files (SSL, zlib, etc.)
|
| 63 | Defaults to sibbling directory deps: ../deps
|
| 64 | Libraries can be fetched at http://windows.php.net/downloads/php-sdk/deps/
|
| 65 | Uncompress them into the deps folder.
|
| 66 | WITH_SSL=<dll or static> - Enable OpenSSL support, DLL or static
|
| 67 | WITH_MBEDTLS=<dll or static> - Enable mbedTLS support, DLL or static
|
| 68 | WITH_CARES=<dll or static> - Enable c-ares support, DLL or static
|
| 69 | WITH_ZLIB=<dll or static> - Enable zlib support, DLL or static
|
| 70 | WITH_SSH2=<dll or static> - Enable libSSH2 support, DLL or static
|
| 71 | ENABLE_SSPI=<yes or no> - Enable SSPI support, defaults to yes
|
| 72 | ENABLE_IPV6=<yes or no> - Enable IPv6, defaults to yes
|
| 73 | ENABLE_IDN=<yes or no> - Enable use of Windows IDN APIs, defaults to yes
|
| 74 | Requires Windows Vista or later, or installation from:
|
| 75 | https://www.microsoft.com/downloads/details.aspx?FamilyID=AD6158D7-DDBA-416A-9109-07607425A815
|
| 76 | ENABLE_WINSSL=<yes or no> - Enable native Windows SSL support, defaults to yes
|
| 77 | GEN_PDB=<yes or no> - Generate Program Database (debug symbols for release build)
|
| 78 | DEBUG=<yes or no> - Debug builds
|
| 79 | MACHINE=<x86 or x64> - Target architecture (default is x86)
|
| 80 |
|
| 81 | Static linking of Microsoft's C RunTime (CRT):
|
| 82 | ==============================================
|
| 83 | If you are using mode=static nmake will create and link to the static build of
|
| 84 | libcurl but *not* the static CRT. If you must you can force nmake to link in
|
| 85 | the static CRT by passing RTLIBCFG=static. Typically you shouldn't use that
|
| 86 | option, and nmake will default to the DLL CRT. RTLIBCFG is rarely used and
|
| 87 | therefore rarely tested. When passing RTLIBCFG for a configuration that was
|
| 88 | already built but not with that option, or if the option was specified
|
| 89 | differently, you must destroy the build directory containing the configuration
|
| 90 | so that nmake can build it from scratch.
|
| 91 |
|
| 92 | Legacy Windows and SSL
|
| 93 | ======================
|
| 94 | When you build curl using the build files in this directory the default SSL
|
| 95 | backend will be WinSSL (Windows SSPI, more specifically Schannel), the native
|
| 96 | SSL library that comes with the Windows OS. WinSSL in Windows <= XP is not able
|
| 97 | to connect to servers that no longer support the legacy handshakes and
|
| 98 | algorithms used by those versions. If you will be using curl in one of those
|
| 99 | earlier versions of Windows you should choose another SSL backend like OpenSSL.
|