Difference between revisions of "DevelopmentEnvironment"

From aHuman Wiki
Jump to: navigation, search
(Automated page entry using MWPush.pl)
 
(Automated page entry using MWPush.pl)
Line 23: Line 23:
 
* Projects are not directly dependent on each other; if dependencies exist, related interfaces and binaries are copied into target project codebase
 
* 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
 
* 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 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)
+
** 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:
 
* Any project contains typical directories on top level:
* src - all sources, including C/C++ headers and body files
+
** src - all sources, including C/C++ headers and body files
* bin - output files should be redirected to this location
+
** bin - output files should be redirected to this location
* build - intermediate files, byproducts of build
+
** build - intermediate files, byproducts of build
* etc - configuration files if any
+
** etc - configuration files if any
* lib - used libraries
+
** lib - used libraries
 
* any project is included in one or more workspaces
 
* any project is included in one or more workspaces
* project corresponds to the build target
+
** project corresponds to the build target
* workspace corresponds to the deployment target and has name:
+
** workspace corresponds to the deployment target and has name:
 
<pre>
 
<pre>
 
"workspace.<deployment target name>"
 
"workspace.<deployment target name>"

Revision as of 10:49, 16 June 2015

Development Environment

@@Home -> DevelopmentEnvironment

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 Joining the Project quest before trying below

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.<deployment target name>"

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