Skip to content
omsai edited this page Dec 12, 2012 · 5 revisions

The goals of this fork of µManager are:

  1. Support CMake build system
  2. Generate separate backend and GUI packages using CPack, namely:
  • µManager-Libs
  • µManager-Studio

Table of Contents

## Statement of Problem
  1. Out of sync development environments:
  • Mac and GNU/Linux use Autotools
  • Windows uses Visual Studio 2008 project files
  • No support for Eclipse, etc
  1. Non-standard Java build system for GUI using ant, Autotools and batch files
  2. No packages for GNU/Linux are generated upstream, only Windows and Mac
  3. No library package for frontend projects like Endrov and Icy:
  • Headers for MMCore and MMDevice are not installed or in the PATH for external DeviceAdapters
  • DeviceKit and Tutorial examples are not installed
## Objectives
  1. Generate IDE project files with CMake. CMake supports a wide range of generators and to create the project files for your favorite IDE using the -G option:
cmake . -G "Eclipse CDT4 - MinGW Makefiles"
cmake . -G "Unix Makefiles"
cmake . -G "Visual Studio 9 2008"
cmake . -G "Visual Studio 11 Win64"
  1. Ant should purely build the Java GUI layer. Work on this is being done by openspim

  2. Generate source and binary tarballs with CPack. Implementing make dist would not help other platforms

## Developer Resources ### Building with CMake

It's not good to simply run cmake . in the root directory as it pollutes the tree with CMakeCache.txt and CMakeFiles/*. The best practice is to run CMake out-of-source. We suggest setting up your out-of-source tree this way:

# assuming you are in the project root directory
mkdir -p builds/normal builds/debug
cd builds/normal
cmake ../.. -DCMAKE_BUILD_TYPE=RELEASE
cd ../debug
cmake ../.. -DCMAKE_BUILD_TYPE=DEBUG
### Coding Style for CMake
  • Lower case function names
  • Upper case variables
  • No space between function names and parenthesis (to make it clear it's a function and not a mathematical parenthesis)
  • Space allowed inside function parenthesis padding parameters e.g. function( FOO )
  • Finish conditionals in newer () form
  • New line at end of file
    • Emacs users can use (setq require-final-newline t)
### Implementation Notes
  • Loosely couple DeviceAdapters with CMake includes to be built outside of the Subversion tree
## Contact

IRC: #micro-manager on FreeNode

Clone this wiki locally