#summary Development Environment @@[Home] -> [DevelopmentEnvironment] http://usvn.ahuman.org/svn/ahwiki/images/wiki/procedures/deathrow.jpg ---- == Overview == Project framework is based on Visual Studio 2010 Express Edition - free IDE. Subversion is used as a version control system. == How To Setup Development Environment == Finish [JoinProject Joining the Project] quest before trying below * [VisualStudio2010 Setup Visual Studio 2010 Express Edition] * [Subversion Setup Subversion] * [Sources Download Sources and Build] * [LocalIDEEnvironment Run and Debug Locally] == Project Structure Guidelines == * Projects are not directly dependent on each other; if dependencies exist, related interfaces and binaries are copied into target project codebase * Virtual folders should correspond to directories, except for below cases * if folder contains files of different types - e.g. headers and C++, then we can create virtual folders to separate these types - e.g. "include" directory * if folder has too many files to manage - we can split files by folders (but better to split files by subdirectories as well) * Any project contains typical directories on top level: * src - all sources, including C/C++ headers and body files * bin - output files should be redirected to this location * build - intermediate files, byproducts of build * etc - configuration files if any * lib - used libraries * any project is included in one or more workspaces * project corresponds to the build target * workspace corresponds to the deployment target and has name: {{{ "workspace." }}} == Upgrading the Development Environment == General IDE requirements: * Language is not P-code like Java - these programs work in sandbox and use quite heavy runtime * IDE is free * Evidence of successful discussion at forum == Usign External Libraries == * for each research area support several libraries implementing related features * each external library should have been committed as is, with all sources * customized library should have been specifically marked in the codebase * any external library should have wrapper code, functioning as a facade (limiting library scope to only used one and conforming interfaces to aHuman codestyle and design giudelines) == Decommissioned child pages == * [MSVC6 Setup Microsoft Visual C++ 6.0] - stale due to migration to Codelite * [Codelite Setup Codelite] - less convenient than Visual Studio