Friday, 27 January 2012

Windwows Embedded Compact: The 3rdParty folder

Hi folks,

with Windows Embedded CE 6.0 Microsoft introduced the %_WINCEROOT%\3rdParty folder. Unfortunately, very little information about this mysterious folder can be found. Hopefully, this post will shed a little light into this matter.

You can use the 3rdParty folder for components that are independent of a specific BSP or OSDesign - for instance cloned components form the PUBLIC (or the PRIVAT) tree (e.g. the sample Internet Explorer IESAMPLE). Of course you may also add your own components such as a new file system.

The %_WINCEROOT%\3rdParty folder is not part of the Windows Embedded Compact installation so if you want to use it you have to create it manually. You also have to create at least the CATALOG subfolder with at least one .pbcxml file as the 3rdParty folder is automatically scanned for catalog item files: %_WINCEROOT%\3rdParty\CATALOG. Now you are set up and ready to go.

Development considerations:
Ultimately, components in the %_WINCEROOT%\3rdParty folder are Platform Builder subprojects. So in a first step you have to create a subproject.

If you clone a PUBLIC (or PRIVATE) component, first copy it to the %_WINCEROOT%\3rdParty folder (you may use subfolders if so desired).

With your OSDesign open, choose Project | Add Existing Subprject… from the Platform Builder menu.

In the appearing dialog, from the Files of type: drop down menu choose Sources/Dirs Files (sources;dirs). Browse to your cloned component in the %_WINCEROOT%\3rdParty folder and select the corresponding sources or dirs file. The wizard now creates your subproject including files such as .pbxml, .bib, .reg, .dat, .db

Create a catalog item file for you component in the %_WINCEROOT%\3rdParty\CATALOG folder.

Be sure to include the path to your subprojects .pbxml file in the Project tag of your catalog item file: <project>$(_WINCEROOT)\3RDPARTY\(…).PBPXML</project>. Now you don’t have to explicitly add the subproject to each OSDesign via the Project | Add Existing Subprject… Platform Builder menu. Simply checking your catalog item does the trick for you.

Modify your cloned code according to your needs. Be sure to set RELEASETYPE=LOCAL in every sources file inside the %_WINCEROOT%\3rdParty folder (this can also be done globally in the sources.cmn file). This specifies that the build output (.lib, .dll or .exe) will be places directely under your components obj folder.

As mentioned, 3rdParty components are Platform Builder Subprojects. There are certain restrictions to Platform Builder subprojects, therefore not every component can be built as a subproject. Hence, you might also consider using a Smart Device project or cloning the component directly in your BSP instead of using the %_WINCEROOT%\3rdParty folder.

Have fun!

No comments: