- Unification of IDL compiler output
A compilation of an IDL file (e.g.
exactly the following files:
- Foo.hpp: a
file which contains at least stubs
declarations; may include other stub headers
header file which contains both stubs and
skeletons (including TIE templates, if the IDL compiler
declarations; may include its stub
header and other skeleton
- Foo.cpp: a
file which should be linked to programs which
use the stubs; includes Foo.hpp
source file which should be linked to programs
which implement the skeletons (should not be linked
together with Foo.cpp);
(and thus may
The generated sources always include the generated headers
path, no matter if subdir-objects
is used or not. This is required because (almost) every IDL
has some peculiarity which prevents inclusion of the generated
relative to the source and/or build directory from working in
"At least" above means that the header may contain more but you
rely on it. For example, omniidl
always generates exactly two files:
- a header which contains both the stubs and skeletons
and even some of the definitions (as inline functions)
- a source file which contains the rest of the stubs and
be identical, Foo.cpp
too. But you should not
Do not rely on the special semantics of #include "..."
relative to the directory of the processed IDL file) because
the IDL compilers have problems with it (orbitcpp
Do not use #include
files, even if the included file is not from you package.
automake-idl cannot unify the generated sources in this case
ORBs (Orbix for sure).
The names of the generated sources can be customized using the
following four optional Makefile.am
the extension for generated header files.
the extension for generated source files.
suffix for client (containing stubs) header and source
suffix for server (containing skeletons) header and source
So, the four generates sources for Foo.idl
Here are the default values of the customization variables:
IDL_HEADER_EXT = hpp
IDL_SOURCE_EXT = cpp
for more info.
- Automatic dependency tracking
automake-idl uses the C++ compiler
do this. Currently, only the following automake depmodes are
- gcc3: GCC 3
- gcc: GCC 2
- icc: old versions of Intel C++ compiler (actually, exactly
same as GCC 2)
- dashmstdout: a generic C++ compiler which supports -M
- dashXmstdout: e.g. Sun C++ compiler
- makedepend: X11
- cpp: a generic C++ preprocessor
If you wish you may modify idldep
to support your
and submit the patch to the mailing
The automatic dependency tracking may be turned off by the usual
cannot be used to have two IDL files with the same name in
C++ source files are generated in the current directory and then
to the subdirectory.
So, the intended use of subdir-objects
is only for cosmetic purposes; don't use it for IDL files
On the contrary - not using subdir-objects
is crucial for the multi-ORB
for more info.
- Standard targets: clean, distclean, dist, etc.
In contrast to lex & yacc, the
clean target removes the generated sources. Distributing
sources is pointless, since different ORB's IDL compilers