| ********************************************************************** |
| * INSTALL file for STLport * |
| * * |
| ********************************************************************** |
| |
| STLport is a full ANSI C++ Standard library. |
| |
| This distribution contains STLport sources only, no binaries. |
| To use STLport iostreams, locale and complex numbers, you have to build STLport |
| library from sources in "build/lib" directory and link your programs with it. |
| |
| Starting with 5.0 the 'wrapper' mode is not supported anymore. You cannot use native |
| compiler iostreams implementation with STLport STL (see doc/FAQ for explanations). |
| Now you have to choose between STLport iostreams or no iostreams. |
| |
| ==== Unpacking and installing STLport ========== |
| |
| 1) Unpack STLport archive to a directory accessible during compilation. |
| NOTE: DO NOT overwrite header files coming with the compiler, even if you made |
| a backup - this won't work! Most probably, you've already unpacked the archive before |
| reading this file though ;) |
| |
| 2) Make sure "stlport" directory of this distribution comes before compiler's one |
| in your include paths when you compile the project. |
| |
| Note: for SunPro CC 5.0 and higher, there used to be special directory "stlport/SC5" |
| this is now obsolete, please make sure you do not use it anymore. |
| |
| 3) Make sure you do not rename this "stlport" subdirectory - |
| that may result in compilation errors. |
| |
| NOTE: Your compiler should be recognized by STLport source code with no configuring. |
| Please edit appropriate configuration header for your compiler |
| directly if you have to make compiler-specific configuration changes |
| (see stlport/stl/config). |
| |
| 4) Run: |
| |
| configure --help |
| |
| Depending on your environment, Windows command shell or Unix like shell, |
| configure.bat or configure script will be run respectively. For Windows users |
| running configure script is mandatory in order to declare the compiler you are |
| going to use. |
| |
| 5) Go to "build/lib" subdirectory. It contains various makefiles for different |
| compilers and 'make' utilities (GNU Make and Microsoft's nmake supported). |
| |
| Verify you can do command line compiles. IDE users may have to do something |
| special, like add environment variables (for Microsoft) or install |
| additional compiler components (for Metrowerks), before they can use their |
| command line compilers (see doc/README.xxxx for additionnal information). |
| |
| configure script should have already created a Makefile file so that you only |
| have to call 'make' or 'nmake' (for some platforms GNU make might be hidden |
| behind 'gmake'). |
| |
| IMPORTANT: |
| |
| If you DO NOT plan to use STLport iostreams and/or locale implementation but just |
| the STL, you do not have to build the library. |
| |
| If you have decided to disable STLport iostreams and locale using _STLP_NO_IOSTREAMS |
| configuration macro in stlport/stl/config/user_config.h, you may stop reading here. |
| |
| |
| ==== Building STLport iostreams library ========== |
| |
| Below are step-by-step instructions to build STLport streams library. This is a general |
| build process description, for a more detailed one check README files in the doc folder: |
| |
| 5) Using appropriate make command (make or nmake), do |
| |
| make clean install |
| |
| to build the STLport libraries. Make files are set up to build several different |
| flavors - debug/nondebug, static/dynamic versions. But not all flavors will be build |
| by default. See build/lib/README for other make targets. |
| |
| Note: 'install' target work slightly different than usual - it installs libraries into |
| <STLport root dir>/lib and bin catalogs, NOT IN SYSTEM CATALOG. You can do the system |
| install by just copying stlport and lib folder to the destination of your choise. For |
| example on UNIX-like platforms this can be done with the following commands: |
| |
| su |
| tar cf - stlport | (cd /usr/local/include; tar xf -) |
| chmod -R a+r /usr/local/include/stlport |
| chown -R root:root /usr/local/include/stlport |
| (cd lib; tar cf - --exclude=CVS --exclude=.cvsignore .) | (cd /usr/local/lib; tar xf -) |
| chown -R root:root /usr/local/lib/libstlport* |
| exit |
| |
| Note: System install is optional, most of compilers/linkers support searching for includes |
| and libs throught out the whole filesystem, just check your documentation on how to achieve |
| this. |
| |
| If you use cross-compiler, you can find libraries in the <STLport root dir>/lib/<target platform> |
| catalog. |
| |
| 6) If build fails, you may choose to : |
| - try fixing the build ;) |
| - wait until somebody else will submit corresponding changes to be incorporated in next STLport |
| release/snapshot. |
| |
| In case you do patch STLport, please submit your patches to |
| https://sourceforge.net/tracker/?atid=766246&group_id=146814&func=browse |
| |
| ==== Linking your application with STLport library ========== |
| |
| 7) Check the build: |
| |
| Example: |
| |
| - under Linux and other Unixes: |
| |
| cd build/test/unit |
| make install |
| ../../../bin/stl_unit_test |
| ../../../bin-g/stl_unit_test |
| |
| - under Windows: |
| |
| cd build\test\unit |
| nmake install |
| cd ..\..\..\bin |
| stl_unit_test |
| stl_unit_testd |
| stl_unit_teststld |
| |
| 8) Supply the "lib" subdirectory to the library search path and add desired |
| library to the list of libraries to link with. |
| Examples (imagine you have mytest.cpp in the same directory as this file is): |
| With GCC : g++ -pthread -I./stlport mytest.cpp -L./lib/ -lstlport |
| With DEC CC : cxx -I./stlport mytest.cpp -L./lib/ -lstlport |
| With SUN CC : CC -mt -I./stlport mytest.cpp -L./lib/ -lstlport |
| ..... |
| For several compilers supporting auto linking feature (VC++, Borland, DMC), |
| you do not have to specify "stlport.M.m.lib" explicitly, as it is being choosen |
| and forced to link automatically by "#pragma"'s in compiler config files |
| Appropriate version is being selected based on compiler options and _STLP_DEBUG |
| setting. All you have to do is to set library search path for the linker. |
| |
| Example : |
| cl.exe /I.\stlport mytest.cpp /link /libpath:.\lib /MD |
| |
| 9) If you linked your application with shared STLport library (.so or .dll), please |
| make suze that your .so or .dll can be found by the dynamic linker. |
| Under Windows, the paths searched depend on the particular flavor, see the MSDN |
| documentation for LoadLibrary at http://msdn.microsoft.com. The easiest ways are to |
| either modify the PATH environment variable or copy all .dll's next to the |
| executable like it is done per default when unit tests executable are put next |
| to dlls. |
| Under Linux, the environment variable LD_LIBRARY_PATH can be adjusted to point |
| to the dir containing .so. See the manpage for ld.so for more info. |
| |
| 10) STLport builds only multithreaded libraries, so your application should be compiled |
| as multithreaded, too. Use -pthread (or -pthreads on Solaris) option for GCC, -mt for SunPro, |
| /MT for VC, and so on. Sometimes you should define _REENTRANT or something else, depends |
| upon platform/compiler. See compiler's and linker's options on command line when you build |
| unit tests (build/test/unit) for reference. The last is useful for ANY platform. |
| |
| 11) Don't hesitate to read READMEs (doc/README*, build/lib/README*, build/test/unit/README*) |
| and doc/FAQ. |
| |
| 12) Have fun! |
| |