Files correlati : Commento : Spostamento in libraries delle librerie esterne di Campo per una maggiore pulizia e organizzazione git-svn-id: svn://10.65.10.50/branches/R_10_00@24150 c028cbd2-c16b-5b4b-a496-9718f37d4682
238 lines
11 KiB
Plaintext
238 lines
11 KiB
Plaintext
Read the README file first.
|
|
|
|
As of version 0.6.0 curlpp has been built and run on win32.
|
|
|
|
Information contained in this file does not apply to cygwin builds.
|
|
|
|
curlpp has been tested on
|
|
Microsoft Visual C++ 7.1 (2003), (by Giuseppe "Cowo" Corbelli)
|
|
Microsoft Visual C++ 8.0 (2005), (by Andrei Korostelev)
|
|
Microsoft Visual C++ 9.0 (2008), (by Piotr Dobrogost)
|
|
but any modern C++ compiler should do the job.
|
|
|
|
BUILDING CURLPP WITH MSVC
|
|
-------------------------
|
|
|
|
BUILDING CURLPP
|
|
|
|
You can build curlpp in three different ways
|
|
|
|
A. from within MS Visual Studio IDE
|
|
B. using msbuild tool and solution files
|
|
C. using namke and makefile
|
|
|
|
|
|
A. and B.
|
|
|
|
In case of A. and B. first you have to create solution files for your version of MS Visual Studio.
|
|
To do this use win32\create-vc-solution.bat batch file with one of the following parameters:
|
|
7.1, for Visual Studio 2003
|
|
8, for Visual Studio 2005
|
|
9, for Visual Studio 2008
|
|
This batch file needs sed to be run successfully. You can download sed for win32 platform here
|
|
http://gnuwin32.sourceforge.net/packages/sed.htm
|
|
|
|
|
|
A. Building from within IDE
|
|
|
|
Choosing configuration
|
|
|
|
Choose configuration you would like to build. What configuration you want depens on three aspects.
|
|
1. Weather you want to build dynamic library (dll) or static library (lib).
|
|
Choose configuration with DynamicLib or StaticLib prefix.
|
|
2. Weather you want to build debug or release version of the library.
|
|
Choose configuration with Debug or Release infix.
|
|
3. Weather you want static runtime library (RTL) to be used by curlpp or dynamic one.
|
|
Choose configuration with StaticRTL or DynamicRTL suffix.
|
|
|
|
Names' suffixes of output .lib and .dll files depend on the all three choices.
|
|
|
|
MTd - dynamic, debug, static RTL
|
|
MT - dynamic, release, static RTL
|
|
MDd - dynamic, debug, dynamic RTL
|
|
MD - dynamic, release, dynamic RTL
|
|
|
|
staticMTd - static, debug, static RTL
|
|
staticMT - static, release, static RTL
|
|
staticMDd - static, debug, dynamic RTL
|
|
staticMD - static, release, dynamic RTL
|
|
|
|
We will refer to these suffixes and types of libraries as "build category" further in this document.
|
|
|
|
Setting include directory
|
|
|
|
If you are building curlpp using the original directory structure then you don't need to set value of user macro
|
|
CURLPP_INCLUDE_PATH (by default ".\include"). If however you modified the original directory structure you have
|
|
to set value of this macro to the path, where you have curlpp source files.
|
|
|
|
Setting output directory
|
|
|
|
The output files will be placed in a directory set in CURLPP_LIB_PATH user macro (by default ".out\lib").
|
|
|
|
|
|
B. Building using msbuild
|
|
|
|
Open a command prompt and change folder to the root of curlpp tree.
|
|
|
|
set LIBCURL_PATH=/where/curl/is/installed
|
|
set OPENSSL_PATH=/where/openssl/is/installed (only if you have libcurl with ssl support and ssl installed)
|
|
msbuild curlpp.sln /t:Rebuild /p:Configuration=<Configuration>
|
|
where <Configuration> is one of
|
|
- DynamicLibDebugDynamicRTL
|
|
- DynamicLibDebugStaticRTL
|
|
- DynamicLibReleaseDynamicRTL
|
|
- DynamicLibReleaseStaticRTL
|
|
- StaticLibDebugDynamicRTL
|
|
- StaticLibDebugStaticRTL
|
|
- StaticLibReleaseDynamicRTL
|
|
- StaticLibReleaseStaticRTL
|
|
|
|
Output files will be placed in a directory set in CURLPP_LIB_PATH.
|
|
|
|
Any of DynamicLib* configurations will build a .dll library file and a .lib library import file.
|
|
Any of StaticLib* configurations will build the .lib static (inline) library.
|
|
Any of *Debug* configurations will in addition build a .pdb Program Database file.
|
|
|
|
|
|
C. Building using nmake
|
|
|
|
Open a command prompt and change folder to the root of curlpp tree.
|
|
Run nmake /f makefile with the following parameters
|
|
BUILD_CFG=[dynamic|static]-[debug|release]
|
|
RTLIB_CFG=[dynamic|static]-[debug|release]
|
|
LIBCURL_CFG=[dynamic|static]-[debug|release]
|
|
|
|
All options are optional.
|
|
Default for BUILD_CFG is dynamic-release.
|
|
Default for others is the value of BUILD_CFG.
|
|
Edit the LIBCURL_PATH or set LIBCURL_PATH envvar!
|
|
|
|
|
|
NOTES
|
|
|
|
Linking with libcurl
|
|
|
|
All versions of this library need libcurl (c library) include files to compile and lib file to link successfully.
|
|
To build curlpp you first have to set value of LIBCURL_PATH user macro to your installation of libcurl.
|
|
This macro is used in the project file for VC9 to find include and lib files of libcurl.
|
|
Steps to set user macro. Select View/Property Manager, double-click curlpp property sheet, go to
|
|
Common Properties/User Macros/, double-click name of macro you want to modify, modify it and click OK.
|
|
Filename of libcurl's lib file should be in the form libcurlX.lib where X denotes build category chosen for curlpp.
|
|
(see Linking with RTL)
|
|
If it has different name you have to change .lib filename in
|
|
Project properties\Librarian\Additional Dependencies (when building static library)
|
|
or
|
|
Project properties\Linker\Input\Additional Dependencies (when building dynamic library).
|
|
|
|
|
|
Linking with static libcurl
|
|
|
|
If you are not going to use libcurl as a dll and you would like to include it into your library/executable by
|
|
linking to static version of libcurl you have to define preprocessor symbol CURL_STATICLIB. You can do it in
|
|
Project/Properties/C/C++/Preprocessor/Preprocessor Definitions.
|
|
By default all StaticLib* configurations define this symbol. If for some reason you would like to build static
|
|
curlpp library which links do dynamic libcurl library you have to remove CURL_STATICLIB define.
|
|
|
|
|
|
Linking with RTL
|
|
|
|
You have to link with libcurl which uses RTL in the same way as you are going to use RTL in curlpp lib.
|
|
Refering to build categories defined earlier in section "Choosing configuration" both libcurl and curlpp
|
|
must have the same build category.
|
|
If you are going to use dynamic RTL in curlpp (MD[x]), use libcurl which also uses dynamic RTL (MD[x]).
|
|
If you are going to use static RTL in curlpp (MT[x]), use libcurl which also uses static RTL (MT[x]).
|
|
You can use debug build of libcurl (MDd or MTd) in the release build of curlpp (MD or MT) and
|
|
you can use release build of libcurl (MD or MT) in the debug build of curlpp (MDd or MTd).
|
|
However you shouldn't do this.
|
|
|
|
Building self-contained version of the library
|
|
|
|
curlpp is mostly a template library. For this reason during build of it, only non template entities are placed in the
|
|
.lib and .dll files. Most of the library's features used in your application causes code generation during compilation
|
|
of _your project_ and the code is placed in your executable. This is often not desirable. If you want to build
|
|
the curlpp as self-contained library (one which has all code called by clients in its .lib and .dll files) you can
|
|
define preprocesor symbol CURL_SELF_CONTAINED. In this case curlpp uses explicit template instantiation (all such
|
|
instantiantions are placed in separte .ins files) to force generating code into .lib and .dll files. You have to
|
|
define this preprocesor symbol during build of your application to avoid including templates' definitions as they
|
|
are not needed in this phase. If you get linker errors connected with curlpp features when using self-contained
|
|
version of the library it's because there are some missing explicit instantiantions. Please let us know if it happens.
|
|
|
|
|
|
Using curlpp in .NET applications
|
|
|
|
If you are going to use curlpp library in a .NET project you have to use dynamic RTL.
|
|
This is because all .NET applications must use dynamic RTL and if your application uses curlpp,
|
|
the library itself has to use dynamic RTL as well.
|
|
|
|
|
|
Additional dependencies
|
|
|
|
To build examples (and your project as well) you need the following Windows lib files to link successfully
|
|
WSock32.lib, Wldap32.lib
|
|
These files comes with WindowsSDK. Macro $(WIN_SDK_DIR) (by default $(WindowsSdkDir)) is used in the properties
|
|
sheet file curlpp.examples.VC9.vsprops by VC9 solution to find these libraries.
|
|
|
|
|
|
Linking with OpenSSL
|
|
|
|
If you have libcurl compiled with OpenSSL support and want to have support for OpenSSL in curlpp as well
|
|
you have to set value of OPENSSL_PATH user macro to your installation of OpenSSL before building curlpp.
|
|
This variable is used in the project file for VC9 to find include and lib files of OpenSSL.
|
|
Steps to set user macro. Select View/Property Manager, double-click curlpp property sheet, go to
|
|
Common Properties/User Macros/, double-click name of macro you want to modify, modify it and click OK.
|
|
You have to link with OpenSSL which uses RTL in the same way as you are going to use RTL in curlpp lib.
|
|
Refering to build categories defined earlier in section "Choosing configuration" both OpenSSL and curlpp
|
|
must have the same build category.
|
|
Filenames of OpenSSL lib files should be in the form libeay32X.lib and ssleay32X.lib, where X denotes
|
|
build category chosen for curlpp. You have to add both this filenames to
|
|
Project properties\Librarian\Additional Dependencies (when building static library)
|
|
or
|
|
Project properties\Linker\Input\Additional Dependencies (when building dynamic library).
|
|
|
|
If you need OpenSSL for Windows platform take a look at http://www.slproweb.com/products/Win32OpenSSL.html
|
|
If you installed OpenSSL downloaded from the above link you'll find .lib files of all four build categories
|
|
in the /lib/vc directory.
|
|
|
|
|
|
Building with support for Boost
|
|
|
|
curlpp has ability to use some features from the Boost library. If you want to build curlpp with support for Boost
|
|
you have to set value of BOOST_PATH user macro to your installation of Boost before building curlpp.
|
|
This variable is used in the project file for VC9 to find include files of Boost.
|
|
You also have to define preprocessor symbol HAVE_BOOST. You can do it in
|
|
Project/Properties/C/C++/Preprocessor/Preprocessor Definitions.
|
|
|
|
|
|
Project propery sheets
|
|
|
|
All user macros like LIBCURL_PATH, OPENSSL_PATH, BOOST_PATH, CURLPP_INCLUDE_PATH, CURLPP_LIB_PATH, WIN_SDK_DIR,
|
|
CURLPP_EXAMPLES_OUT_DIR, etc.
|
|
are defined in project property sheet files named
|
|
curlpp.common.vsprops - options and macros used during build of library itself and during build of examples
|
|
curlpp.lib.vsprops - options and macros used during build of library itself
|
|
curlpp.examples.vsprops - options and macros used during build of examples
|
|
|
|
|
|
Compiler warnings
|
|
|
|
There are a few kinds of compiler warnings which we haven't managed to remove.
|
|
|
|
warning C4251: class X needs to have dll-interface to be used by clients of class Y
|
|
warning C4275: non dll-interface class X used as base for dll-interface class Y
|
|
warning C4512: X : assignment operator could not be generated
|
|
warning C4661: methodX : no suitable definition provided for explicit template instantiation request
|
|
|
|
|
|
BUILDING CURLPP EXAMPLES
|
|
|
|
Your can either build the examples from MS Visual Studio IDE or from the command line from within examples folder:
|
|
|
|
nmake -f Makefile.msvc all
|
|
or
|
|
nmake -f Makefile.msvc exampleXY
|
|
to build example XY
|
|
|
|
|
|
Giuseppe "Cowo" Corbelli, cowo at lugbs dot linux dot it
|
|
Andrei Korostelev, andrei at korostelev dot net
|
|
Piotr Dobrogost, pd.curlpp.org (November 2008 - March 2009) |