Home · All Namespaces · All Classes · Grouped Classes · Modules · Functions codeless banner

Tutorial: How to Create a Helix Plug-in

The Qt Extended media server is able to use the Helix DNA Client multi-media engine. Information on writing plug-ins for Helix DNA Client can be found in the Helix DNA Client SDK Documentation.

To include your plug-in into the Helix build systems requires the following steps:

  1. Modify src/3rdparty/libraries/helix/src/build/build/BIF/helix.bif within the Helix source directory as follows:
        <!-- FILESYSTEM/QTOPIA -->
        <module id="filesystem_qtopia" name="filesystem/qtopia" group="core">
            <cvs root="helix"/>
            <includeplatforms>
                unix
            </includeplatforms>
    
            <source_dependlist>
                common_include
            </source_dependlist>
    
            <dependlist>
                common_container
                common_util
                common_system
                common_fileio
                common_dbgtool
                common_runtime
            </dependlist>
        </module>

    where

  2. Add the plug-in to the target as follows:
        <!-- SPLAY_NODIST -->
        <module id="splay_nodist_qtopia" name="clientapps/simpleplayer" group="core">
            <includeplatforms>
                unix mac win32 symbian openwave wince
            </includeplatforms>
    
            <dependlist>
                filesystem_qtopia
        ...
            </dependlist>
        </module>

    where the target is the top-level module definition that defines modules included in the build.

  3. Create a Umakefile, for example, the following Umakefile is used for the Qt Extended filesystem plug-in:
        UmakefileVersion(2,1)
    
        project.AddModuleIncludes("common/include",
                                  "common/system/pub")
    
        project.AddIncludes(os.path.join(GetSDKPath("qt"),"include"))
        project.AddIncludes(os.path.join(GetSDKPath("qt"),"include","Qt"))
        project.AddIncludes(os.path.join(GetSDKPath("qt"),"include","QtGui"))
        project.AddIncludes(os.path.join(GetSDKPath("qt"),"include","QtCore"))
    
        project.AddIncludes(os.path.join(GetSDKPath("qtopia"),"include"))
    
        project.AddSystemPaths("-L" + os.path.join(GetSDKPath("qt"),"lib"))
    
        if project.BuildOption("debug"):
            project.AddSystemLibraries("QtCore_debug")
        else:
            project.AddSystemLibraries("QtCore")
    
        project.AddSystemPaths("-L" + os.path.join(GetSDKPath("qtopia"),"lib"))
        project.AddSystemLibraries("qtopia");
    
        project.AddSources('qtopiafileobject.cpp', 'qtopiafilesystem.cpp')
    
        project.ExportFunction("RMACreateInstance",
                               "IUnknown** ppObj",
                               "common/include",
                               "hxcom.h")
    
        DLLTarget('qtopiafsys')

    Note: If your plug-in does not use the Qt or Qt Extended libraries you can exclude:

  4. At configure time after copying the Helix sources and Qt Extended additions to src/3rdparty/libraries/helixbuild the Qt Extended build system applies patches to the Helix source tree.

    To have your changes applied at configure time you may perform one or both of the following:

Note: Reference documentation for Helix build system including Umakefiles is available in build/doc within the Helix source directory.


Copyright © 2009 Trolltech Trademarks
Qt Extended 4.4.3