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) |