forked from mdcurtis/micromanager-upstream
-
Notifications
You must be signed in to change notification settings - Fork 1
Home
omsai edited this page Dec 12, 2012
·
5 revisions
The goals of this fork of µManager are:
- Support CMake build system
- Generate separate backend and GUI packages using CPack, namely:
- µManager-Libs
- µManager-Studio
## Statement of ProblemTable of Contents
- Out of sync development environments:
- Mac and GNU/Linux use Autotools
- Windows uses Visual Studio 2008 project files
- No support for Eclipse, etc
- Non-standard Java build system for GUI using ant, Autotools and batch files
- No packages for GNU/Linux are generated upstream, only Windows and Mac
- 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
- 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"
-
Ant should purely build the Java GUI layer. Work on this is being done by openspim
-
Generate source and binary tarballs with CPack. Implementing
make dist
would not help other platforms
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
- 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)
- Emacs users can use
- Loosely couple DeviceAdapters with CMake includes to be built outside of the Subversion tree
IRC: #micro-manager on FreeNode