* doc/examples/multi_files_f1.cc.raw,
* doc/examples/multi_files_f2.cc.raw,
* doc/examples/multi_files_main.cc.raw,
* doc/examples/multiple_def.cc.raw,
* doc/examples/typenametemplate.cc.raw,
* doc/examples/undef_global_vars.cc.raw,
* doc/examples/wrongvaluetype.cc.raw: New.
* doc/ref-guide.tex: Add a new section.
---
milena/ChangeLog | 14 +++++
milena/doc/examples/multi_files_f1.cc.raw | 6 ++
milena/doc/examples/multi_files_f2.cc.raw | 6 ++
milena/doc/examples/multi_files_main.cc.raw | 16 ++++++
milena/doc/examples/multiple_def.cc.raw | 9 +++
milena/doc/examples/typenametemplate.cc.raw | 1 +
milena/doc/examples/undef_global_vars.cc.raw | 1 +
milena/doc/examples/wrongvaluetype.cc.raw | 2 +
milena/doc/ref-guide.tex | 69 +++++++++++++++++++++-----
9 files changed, 112 insertions(+), 12 deletions(-)
create mode 100644 milena/doc/examples/multi_files_f1.cc.raw
create mode 100644 milena/doc/examples/multi_files_f2.cc.raw
create mode 100644 milena/doc/examples/multi_files_main.cc.raw
create mode 100644 milena/doc/examples/multiple_def.cc.raw
create mode 100644 milena/doc/examples/typenametemplate.cc.raw
create mode 100644 milena/doc/examples/undef_global_vars.cc.raw
create mode 100644 milena/doc/examples/wrongvaluetype.cc.raw
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 17521bf..76aef9a 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,19 @@
2013-04-17 Guillaume Lazzara <z(a)lrde.epita.fr>
+ Add explanations on compilation with multiple files.
+
+ * doc/examples/multi_files_f1.cc.raw,
+ * doc/examples/multi_files_f2.cc.raw,
+ * doc/examples/multi_files_main.cc.raw,
+ * doc/examples/multiple_def.cc.raw,
+ * doc/examples/typenametemplate.cc.raw,
+ * doc/examples/undef_global_vars.cc.raw,
+ * doc/examples/wrongvaluetype.cc.raw: New.
+
+ * doc/ref-guide.tex: Add a new section.
+
+2013-04-17 Guillaume Lazzara <z(a)lrde.epita.fr>
+
* doc/Doxyfile.in: Expand more macros.
2013-04-17 Guillaume Lazzara <z(a)lrde.epita.fr>
diff --git a/milena/doc/examples/multi_files_f1.cc.raw b/milena/doc/examples/multi_files_f1.cc.raw
new file mode 100644
index 0000000..57e17bd
--- /dev/null
+++ b/milena/doc/examples/multi_files_f1.cc.raw
@@ -0,0 +1,6 @@
+#include <mln/core/image/image2d.hh>
+
+void f1()
+{
+
+}
diff --git a/milena/doc/examples/multi_files_f2.cc.raw b/milena/doc/examples/multi_files_f2.cc.raw
new file mode 100644
index 0000000..730ae3f
--- /dev/null
+++ b/milena/doc/examples/multi_files_f2.cc.raw
@@ -0,0 +1,6 @@
+#include <mln/core/image/image2d.hh>
+
+void f2()
+{
+
+}
diff --git a/milena/doc/examples/multi_files_main.cc.raw b/milena/doc/examples/multi_files_main.cc.raw
new file mode 100644
index 0000000..f131099
--- /dev/null
+++ b/milena/doc/examples/multi_files_main.cc.raw
@@ -0,0 +1,16 @@
+#undef MLN_WO_GLOBAL_VARS
+
+// This include is needed here to compile the global variables with
+// this file. We include that file because it is used in other parts
+// of the project.
+#include <mln/core/image/image2d.hh>
+
+// Forward declarations
+void f1();
+void f2();
+
+int main()
+{
+ f1();
+ f2();
+}
diff --git a/milena/doc/examples/multiple_def.cc.raw b/milena/doc/examples/multiple_def.cc.raw
new file mode 100644
index 0000000..741273c
--- /dev/null
+++ b/milena/doc/examples/multiple_def.cc.raw
@@ -0,0 +1,9 @@
+fidji\% g++ main.cc f1.cc f2.cc -I$OLN/milena
+/tmp/ccZLOEyG.o:(.data+0x0): multiple definition of `mln::debug::trace::quiet'
+/tmp/ccqHhSP3.o:(.data+0x0): first defined here
+/tmp/ccZLOEyG.o:(.bss+0x0): multiple definition of `mln::debug::trace::tab'
+/tmp/ccqHhSP3.o:(.bss+0x0): first defined here
+/tmp/ccZLOEyG.o:(.bss+0x4): multiple definition of `mln::debug::trace::full_trace'
+/tmp/ccqHhSP3.o:(.bss+0x4): first defined here
+/tmp/ccZLOEyG.o:(.bss+0x20): multiple definition of `mln::debug::trace::start_times_'
+/tmp/ccqHhSP3.o:(.bss+0x20): first defined here
diff --git a/milena/doc/examples/typenametemplate.cc.raw b/milena/doc/examples/typenametemplate.cc.raw
new file mode 100644
index 0000000..4ec2d50
--- /dev/null
+++ b/milena/doc/examples/typenametemplate.cc.raw
@@ -0,0 +1 @@
+error: using 'typename' outside of template
\ No newline at end of file
diff --git a/milena/doc/examples/undef_global_vars.cc.raw b/milena/doc/examples/undef_global_vars.cc.raw
new file mode 100644
index 0000000..92c506f
--- /dev/null
+++ b/milena/doc/examples/undef_global_vars.cc.raw
@@ -0,0 +1 @@
+#undef MLN_WO_GLOBAL_VARS
diff --git a/milena/doc/examples/wrongvaluetype.cc.raw b/milena/doc/examples/wrongvaluetype.cc.raw
new file mode 100644
index 0000000..7ed1a68
--- /dev/null
+++ b/milena/doc/examples/wrongvaluetype.cc.raw
@@ -0,0 +1,2 @@
+error: 'check' is not a member of 'mln::metal::not_equal<bool, bool>}
+error: 'check' is not a member of 'mln::metal::converts_to<mln::value::rgb<8u>, unsigned int>'
\ No newline at end of file
diff --git a/milena/doc/ref-guide.tex b/milena/doc/ref-guide.tex
index 6e4a790..b26929a 100644
--- a/milena/doc/ref-guide.tex
+++ b/milena/doc/ref-guide.tex
@@ -245,21 +245,60 @@ Olena's tarball is structured as follow:
Before writing your first program, please be aware of these hints:
\begin{itemize}
- \item By default, Olena enables a lot of internal pre and post conditions.
- Usually, this is a useful feature and it \should be enabled. However, it can heavily
- slow down a program though so these tests can be disabled by compiling
- using \code{-DNDEBUG}.
+ \item By default, Olena enables a lot of internal pre and post
+ conditions. Usually, this is a useful feature and it \should be
+ enabled. However, it can heavily slow down a program though so
+ these tests can be disabled by compiling using \code{-DNDEBUG}.
\begin{verbatim}
-$ g++ -DNDEBUG -Ipath/to/mln my_program.cc
+$ g++ -O2 -DNDEBUG -Ipath/to/mln my_program.cc
\end{verbatim}
%$
- \item If you decide to use optimization flags to compile for debugging,
- prefer using \code{-O1}. It is much faster to compile and it gives good
- performance results.
+ \item If you decide to use optimization flags to compile for
+ debugging, prefer using \code{-O1}. It is much faster to compile
+ and it gives good performance results.
+\end{itemize}
+
+
+\doxysection{multicompile}{Compiling a multiple files program with Olena}
+
+In case of a large project, Olena may be used in several source
+files. Even if compilation is fine, you may encounter the following
+linking error:
+
+\doxyrawcode{multiple_def}
+These multiple symbol definitions are due to some global variables
+used in Olena. They are built in each source file which includes Olena
+headers and are therefore duplicated, causing linking errors.
+
+An easy way to override this issue is to compile all the source files
+of your project passing -DMLN\_WO\_GLOBAL\_VARS.
+Then, at the top of one of the files which includes Olena headers, add:
+
+\doxyrawcode{undef_global_vars}
+
+Here is a small example.
+
+\begin{itemize}
+ \item main.cc
+ \doxyrawcode{multi_files_main}
+ \item f1.cc
+ \doxyrawcode{multi_files_f1}
+ \item f2.cc
+ \doxyrawcode{multi_files_f2}
\end{itemize}
+This example can be compiled with the following command:
+ \begin{verbatim}
+$ g++ -DNDEBUG -O2 -DMLN_WO_GLOBAL_VARS -Ipath/to/mln main.cc f1.cc f2.cc
+ \end{verbatim}
+%$
+
+Note that the file where MLN\_WO\_GLOBAL\_VARS is undefined must
+include olena headers to declare and compile the global variables.
+
+
%====================================
%\clearpage
@@ -721,7 +760,7 @@ Note that:
%================================================
-%\doxysection{imamorphed}{Morphed images}
+\doxysection{imamorphed}{Morphed images}
%//FIXME: Write it!
%// Pas concrete, light, how to concrete
%
@@ -1990,8 +2029,7 @@ In this section, the most common compilation errors are gathered and explained.
\begin{itemize}
\item
- \textbf{error: 'check' is not a member of 'mln::metal::not\_equal$<$bool, bool$>$} \\
- \textbf{error: 'check' is not a member of 'mln::metal::converts\_to$<$mln::value::rgb$<$8u$>$, unsigned int$>$'} \\
+ \doxyrawcode{wrongvaluetype}
The routine does not support a given image with such a value type
or an automatic conversion from the image value type to the
@@ -1999,13 +2037,20 @@ In this section, the most common compilation errors are gathered and explained.
\item
- \textbf{error: using 'typename' outside of template} \\
+ \doxyrawcode{typenametemplate}
Macros like \code{mln\_site} or \code{mln\_domain} can only be
used in templated functions. In order to use them in a
non-templated function, a `\_' must be appended to the macro
name. For instance : \code{mln\_site\_} and \code{mln\_domain\_}.
+ \item
+ \doxyrawcode{multiple_def}
+
+ This is because, by default, Milena does not support compilation
+ with multiple .cc files. Section \doxyref{multicompile} describes
+ how to do that.
+
\end{itemize}
--
1.7.2.5
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch next has been updated
via 979d54b458e41fc3bac8f347742d6a42a03df2a1 (commit)
from 22f1827a91aba6dd05a98e784d53d4e76a1498cd (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
979d54b scribo/util/component_precise_outline.hh: Check if sites are part of the image.
-----------------------------------------------------------------------
Summary of changes:
scribo/ChangeLog | 5 +++++
scribo/scribo/util/component_precise_outline.hh | 9 +++++----
2 files changed, 10 insertions(+), 4 deletions(-)
hooks/post-receive
--
Olena, a generic and efficient image processing platform
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch exp/TL has been updated
via c3bdf5c8577d0abf076fb9750f8ad96ecb92ff11 (commit)
via 18a58d33480cce146e8aa2f2f5edb4ccc7b75cea (commit)
from ee28c0638e95109490ffb89e1b175802e6c82634 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
c3bdf5c Merge branch 'exp/all-blobs' into exp/TL
-----------------------------------------------------------------------
Summary of changes:
milena/ChangeLog | 14 ++++
milena/mln/canvas/labeling/blobs.hh | 12 ++--
milena/mln/labeling/{blobs.hh => all_blobs.hh} | 68 ++++++++++----------
milena/mln/labeling/blobs.hh | 52 +++++++++------
milena/mln/labeling/blobs_and_compute.hh | 16 ++++-
milena/tests/labeling/Makefile.am | 1 +
.../tests/labeling/{foreground.cc => all_blobs.cc} | 48 +++++++-------
7 files changed, 121 insertions(+), 90 deletions(-)
copy milena/mln/labeling/{blobs.hh => all_blobs.hh} (62%)
copy milena/tests/labeling/{foreground.cc => all_blobs.cc} (68%)
hooks/post-receive
--
Olena, a generic and efficient image processing platform
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch exp/all-blobs has been created
at 18a58d33480cce146e8aa2f2f5edb4ccc7b75cea (commit)
- Log -----------------------------------------------------------------
18a58d3 Add a labeling routine working on grayscale images.
-----------------------------------------------------------------------
hooks/post-receive
--
Olena, a generic and efficient image processing platform