Project architecture

A typical project architecture would be :

<project-root-path>
│
├── conf.d/
│   ├── autobuild/
│   │   ├── agl
│   │   │   └── autobuild
│   │   ├── linux
│   │   │   └── autobuild
│   │   └── windows
│   │       └── autobuild
│   ├── app-templates/
│   │   ├── README.md
│   │   ├── cmake/
│   │   │   ├── export.map
│   │   │   └── macros.cmake
│   │   ├── samples.d/
│   │   │   ├── CMakeLists.txt.sample
│   │   │   ├── config.cmake.sample
│   │   │   ├── config.xml.in.sample
│   │   │   └── xds-config.env.sample
│   │   ├── template.d/
│   │   │   ├── autobuild/
│   │   │   │   ├── agl
│   │   │   │   │   └── autobuild.in
│   │   │   │   ├── linux
│   │   │   │   │   └── autobuild.in
│   │   │   │   └── windows
│   │   │   │       └── autobuild.in
│   │   │   ├── config.xml.in
│   │   │   ├── deb-config.dsc.in
│   │   │   ├── deb-config.install.in
│   │   │   ├── debian.changelog.in
│   │   │   ├── debian.compat.in
│   │   │   ├── debian.rules.in
│   │   │   ├── gdb-on-target.ini.in
│   │   │   ├── install-wgt-on-target.sh.in
│   │   │   ├── start-on-target.sh.in
│   │   │   ├── rpm-config.spec.in
│   │   │   └── xds-project-target.conf.in
│   │   └── wgt/
│   │       ├── icon-default.png
│   │       ├── icon-html5.png
│   │       ├── icon-native.png
│   │       ├── icon-qml.png
│   │       └── icon-service.png
│   ├── packaging/
│   │   ├── config.spec
│   │   └── config.deb
│   ├── cmake
│   │   └── config.cmake
│   └── wgt
│      └── config.xml.in
├── <libs>
├── <target>
│   └── <files>
├── <target>
│   └── <file>
└── <target>
    └── <files>
# Parent Description
\<root-path> - Path to your project. Hold master CMakeLists.txt and general files of your projects.
conf.d \<root-path> Holds needed files to build, install, debug, package an AGL app project
app-templates conf.d Git submodule to app-templates AGL repository which provides CMake helpers macros library, and build scripts. config.cmake is a copy of config.cmake.sample configured for the projects. SHOULD NOT BE MODIFIED MANUALLY !
autobuild conf.d Scripts generated from app-templates to build packages the same way for differents platforms.
cmake conf.d Contains at least config.cmake file modified from the sample provided in app-templates submodule.
wgt conf.d Contains at least config.xml.in template file modified from the sample provided in app-templates submodule for the needs of project (See config.xml.in.sample file for more details).
packaging conf.d Contains output files used to build packages.
\<libs> \<root-path> External dependencies libraries. This isn't to be used to include header file but build and link statically specifics libraries.
\<target> \<root-path> A target to build, typically library, executable, etc.

Manage app-templates submodule

Update

You may have some news bug fixes or features available from app-templates repository that you want. To update your submodule proceed like the following:

git submodule update --remote
git commit -s conf.d/app-templates

This will update the submodule to the HEAD of master branch repository. Save the modification by commiting it in your master git project.

Checkout submodule to a git tag

You could just want to update at a specified repository tag or branch or commit , here are the method to do so:

cd conf.d/app-templates
# Choose one of the following depending what you want
git checkout <tag_name>
git checkout --detach <branch_name>
git checkout --detach <commit_id>
# Then commit
cd ../..
git commit -s conf.d/app-templates