| |
| ======================================== |
| STLport README for eMbedded Visual C++ 3 |
| ======================================== |
| |
| by: Michael Fink, vividos@users.sourceforge.net, last edited 2005-11-15 |
| |
| ============ |
| Introduction |
| ============ |
| This document describes how STLport can be compiled and used with Microsoft |
| eMbedded Visual C++ 3. |
| |
| For any further comments or questsion visit STLport mailing lists |
| http://stlport.sourceforge.net/Maillists.shtml or forums |
| https://sourceforge.net/forum/?group_id=146814 |
| |
| |
| ============= |
| Prerequisites |
| ============= |
| To build and use STLport you will need following tools and libraries: |
| - eMbedded Visual C++ 3.0 |
| - latest CVS version of STLport, use info from page |
| 'http://stlport.sourceforge.net/CVS.shtml' to get it. |
| Note that you may have to get a different branch, please check out the |
| STLport forum "Announcements" which sourcecode is being worked on. |
| |
| ================ |
| Building STLport |
| ================ |
| Note: if you don't plan to use the iostreams part of STLport (via the define |
| _STLP_NO_IOSTREAMS), you don't have to build the library. You can skip straight |
| to the "Using STLport" section. |
| |
| If you want to compile for the Pocket PC 2002 SDK (which in most cases you want) |
| be sure to set the PLATFORM environment variable to "Pocket PC 2002", e.g. with |
| this command: |
| |
| set PLATFORM=Pocket PC 2002 |
| |
| Open a command line prompt and execute the batch file that sets up compiling |
| for ARM or x86 processors. These files usually are in a folder like |
| 'C:\Program Files\Windows CE eMbedded Tools\EVC\WCE300\BIN\' and are called |
| WCEARM.bat and WCEx86.bat. Check if the environment variables are set up |
| properly after that call. You can also adjust the batch files to have the |
| PLATFORM variable set automatically. |
| |
| Go into STLport's 'build\lib' folder and type: |
| |
| configure.bat -c evc3 |
| |
| The makefiles are configured with the given settings. Call configure.bat with |
| the --help option to see all options. The program automatically tells you which |
| command line to use. If you want to install the libraries, add the "install" |
| target as follows: |
| |
| nmake /fmsvc.mak install |
| |
| All libraries (debug, stldebug, release) are now built, static and shared |
| ones. Import libraries (.lib files) are put in the 'lib\evc3-arm' folder, DLLs |
| are put in the 'bin\evc3-arm' folder. If you use another target platform, the |
| name of the folder is changed accordingly, e.g. evc3-x86 for emulator files. |
| |
| Once STLport is built you can decrease the size of the STLport folder by |
| removing intermediate build files. This is done with the following command: |
| |
| nmake /fmsvc.mak clobber |
| |
| Note: MIPS platform is also available for build, but it may not compile or work |
| properly. Use with caution! |
| |
| =============== |
| Testing STLport |
| =============== |
| You can use the unit tests to verify STLport behaves correctly. Change into |
| STLports 'build\test\unit' folder and type: |
| |
| nmake /fmsvc.mak install |
| |
| If you want to build the unit tests for the emulator, you have to reconfigure |
| STLport with the configure.bat, as described above. |
| |
| Once the unit tests are built, upload the binary (found in the 'bin\evc3-arm' |
| folder) to your device or emulator and start it (the test runs for about 30 |
| seconds, depending on the speed of the device). The file 'stlp_test.txt' is |
| created in the root folder of the device, which contains the unit test |
| results. It should report no errors. |
| |
| ============= |
| Using STLport |
| ============= |
| Adjust your include and link paths in eVC3 in 'Tools -> Options -> Directories' |
| and add the paths for all platforms and CPUs on which you want to use STLport. |
| In the include files add the path to STLport's 'stlport' folder. Make sure it |
| is the first directory listed there. Add STLport's 'lib\evc3-arm' or |
| 'lib\evc3-x86' (depending on what target you use) folder for the library files |
| (order of paths doesn't matter here). |
| |
| There are some preprocessor defines that control usage of the STLport in evc3 |
| projects: |
| |
| Define the symbol _STLP_USE_STATIC_LIB when you want to statically link against |
| STLport. The linker will remove unused classes and methods then, saving some |
| space in the executable. |
| |
| If you don't want to use the iostreams part of the library, you can specify the |
| define _STLP_NO_IOSTREAMS. In this mode there is no need to link against the |
| library. |
| |
| STLport uses automatic linking to find the proper .lib file. If you want to see |
| what import library STLport is going to use, define _STLP_VERBOSE_AUTO_LINK. |
| When not using automatic linking (by specifying _STLP_DONT_USE_AUTO_LINK), you |
| have to specify the proper .lib file in the Project Settings, on the "link" tab. |
| The .lib names have the following syntax: |
| |
| stlport(d|stld)[_static].<STLport-Version>.lib |
| |
| Examples: |
| |
| stlport_static.5.0.lib - static release version, Version 5.0.0 |
| stlportd_50.lib - dll debug version, Version 5.0.0 |
| |
| Note that usage of the _STLP_DEBUG mode is currently not recommended for |
| eMbedded Visual C++ builds using the ARM compiler, due to a compiler bug. |
| |
| When using STLport together with MFC, be sure to include the MFC headers first, |
| then include STLport headers, e.g. in your Stdafx.h. This way STLport correctly |
| recognizes MFC usage. You also can define the macro _STLP_USE_MFC, either in |
| your project settings or in stlport/stl/config/user_config.h. |
| |
| Now you should be ready to use STLport. |
| |
| ============ |
| Known issues |
| ============ |
| - Unit Tests in _STLP_DEBUG mode (target 'stldbg-shared') fails in |
| __stl_debug_engine::_M_detach() for several tests due to unknown reasons. |
| A compiler bug in the ARM compiler is suspected. |
| There is currently no workaround for this bug. It is recommended to not use |
| _STLP_DEBUG mode. |
| |
| - Resource compiler issue: |
| |
| The resource compiler is not a C++ compiler, it is a compiler that translates |
| resource files, i.e. files that describe dialogs, strings, version information |
| and other parts of the GUI on MS Windows systems. |
| |
| The problem is that it includes files from the C/C++ include path, and |
| STLport uses mechanisms the resource compiler can't handle, e.g. using macro |
| names longer than 31 characters. |
| |
| The workaround is to guard all affected headers (stdio.h, string.h, stdarg.h, |
| stdlib.h, ctype.h) against this. The resource compiler is detected by the |
| macro RC_INVOKED. |
| |
| - See also README.evc4 issues. |