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