[MOAB-dev] Building MOAB-based applications

Jason Kraftcheck kraftche at cae.wisc.edu
Wed Dec 16 12:21:00 CST 2009


Dmitry Karpeev wrote:
> What's the best way to go about buidling a MOAB-based application?
> Currently, ${PREFIX}/lib/moab.make defines the relevant include and
> lib locations
> and the link line, but it doesn't really specify the C[XX] compiler.
> Even though C[XX]FLAGS are defined, using an incompatible compiler
> (with that used to build the libs)
> can be somewhat dangerous.
> For now I'm using mpicxx used to configure MOAB, but I think it would
> be useful to define the relevant
> make rules (e.g., .cpp.o etc) in moab.make.
> 

If you want to add it, it won't hurt anything.  It isn't there now because
providing a configuration environment for external code is outside the scope
of MOAB.  And MOAB cannot really solve this issue in many cases.  What
happens if the user compiled MOAB with one C++ compiler  and CGM with
another and then tries to compile an application that uses both MOAB and
CGM?  They could get a CXX definition from either, but neither is going to
work.  This is just one of those things that, when building from source,
users need to be careful about.  It is probably only a small subset of users
who have multiple C++ compilers on a system anyway.


> Also, I'm trying to modify mbparallelcomm_test a bit to better control
> performance benchmarking,
> but it appears it cannot be easily built as a MOAB-based app (i.e.,
> outside of the MOAB source tree).
> Part of the reason is that some required headers (e.g.,
> SequenceManager.hpp) are not installed
> and others (i.e., MBError.hpp) is private and generates an error when
> being included.

It is fairly common for testing code to access internals (otherwise unit
testing is impractical or even impossible.)

> Is there an easy way to convert mbparallelcomm_test into a stand-along
> app that can be built on
> top of already installed MOAB?  Perhaps there is an easy solution that
> I've been missing?
> 

What functionality do you require from that test code?  Which functionality
requires access to MOAB internals?  Is there any intersection between the two?

- jason



More information about the moab-dev mailing list