| setup VC9 for CE: |
| ------------------ |
| |
| - VC9 doesn't have any setup batchfiles that prepare the environment for compiling |
| with CE. You can take those from eVC4 and adapt them or write your own. This snippet |
| should get you going: |
| |
| rem you need to adapt at least these three |
| set OSVERSION=WCE500 |
| set PLATFORM=MY_OWN_PLATFORM |
| set TARGETCPU=MIPSII |
| |
| rem the compiler is always cl.exe, different compilers are in different paths |
| set CC=cl.exe |
| rem obviously, these need to be adjusted to where you installed VS2008 and the SDKs |
| set VSINSTALLDIR=C:\Programme\Microsoft Visual Studio 9.0 |
| set SDKROOT=C:\Programme\Windows CE Tools |
| |
| set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_mips;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH% |
| set PLATFORMROOT=%SDKROOT%\%OSVERSION%\%PLATFORM% |
| |
| rem add libs and includes from the SDK |
| set INCLUDE=%PLATFORMROOT%\include\%TARGETCPU%;%PLATFORMROOT%\MFC\include;%PLATFORMROOT%\ATL\include |
| set LIB=%PLATFORMROOT%\lib\%TARGETCPU%;%PLATFORMROOT%\MFC\lib\%TARGETCPU%;%PLATFORMROOT%\ATL\lib\%TARGETCPU% |
| |
| rem add libs that came with VC9 |
| rem Note: there are more libs and includes under ce\atlmfc, you need to add these |
| rem instead of the ones in the SDK if you want to use the newer version of ATL/MFC. |
| set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU% |
| |
| |
| - The snippet below can be used to build STLport for Pocket PC 2003 (using the |
| Pocket PC 2003 SDK shipped with Visual Studio 2008, this is the SDK used when |
| compiling programs from within the IDE): |
| |
| set OSVERSION=WCE420 |
| set PLATFORM=POCKET PC 2003 |
| set TARGETCPU=ARMV4 |
| |
| rem the compiler is always cl.exe, different compilers are in different paths |
| set CC=cl.exe |
| |
| rem obviously, these need to be adjusted to where you installed VS2008 |
| set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 9.0 |
| set SDKROOT=%VSINSTALLDIR%\SmartDevices\SDK |
| |
| set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_arm;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH% |
| set PLATFORMROOT=%SDKROOT%\PocketPC2003 |
| |
| rem add libs and includes from the SDK |
| set INCLUDE=%PLATFORMROOT%\include |
| set LIB=%PLATFORMROOT%\lib\%TARGETCPU% |
| |
| rem add libs that came with VC9 |
| set INCLUDE=%INCLUDE%;%VSINSTALLDIR%\VC\ce\atlmfc\include |
| set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%;%VSINSTALLDIR%\VC\ce\atlmfc\lib\%TARGETCPU% |
| |
| |
| You should now be able to run cl.exe for the target you expected. |
| |
| - The cross compilers of VC9 are the same version as for the native target, i.e. MSC15. |
| |
| - In order for STLport to recognize which target you are compiling for, you need to have |
| some macros defined, e.g. for the target architecture. The compilers do that partially on |
| their own, but not sufficiently. Therefore, STLport requires these defines: |
| |
| -- These are generally set for CE: |
| _UNICODE;UNICODE;_WIN32;WIN32;UNDER_CE;WINCE; |
| -- This one uses an environment variable to set the CE version: |
| _WIN32_WCE=$(CEVER); |
| -- These are used to help STLport recognise the target architecture: |
| $(ARCHFAM);$(_ARCHFAM_);$(INSTRUCTIONSET) |
| Note that the instructionset is not strictly needed for x86 but definitely for ARM. It |
| doesn't hurt for x86 though, so I'd always set these in any new project. |
| -- For release builds: |
| NDEBUG; |
| -- For debug builds: |
| DEBUG;_DEBUG; |
| -- For debug builds with additional STLport diagnostics: |
| DEBUG;_DEBUG;_STLP_DEBUG; |
| -- For MFC applications: |
| _AFXDLL; |
| |
| - Further settings: |
| Code generation: Multithreaded [Debug] DLL |
| Language: enable RTTI |
| Optimization: maximise speed and enable whole program optimization for release builds |
| |
| - Linker settings: |
| Ignore specific libraries: libc.lib;libcd.lib |
| Commandline: /SUBSYSTEM:WINDOWSCE |
| Optimisation: /LTCG for release builds |
| |
| - Resource compiler: |
| Define: UNDER_CE;WINCE;_WIN32_WCE=$(CEVER) |