Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017 
<== Date ==> <== Thread ==>

Subject: Re: Using V4 pvCommonCPP module with external boost library
From: Andrew Johnson <anj@aps.anl.gov>
To: <alan.greer@diamond.ac.uk>, <tech-talk@aps.anl.gov>
Date: Wed, 28 Oct 2015 13:54:02 -0500
Hi Alan,

On 10/28/2015 09:22 AM, alan.greer@diamond.ac.uk wrote:
> 1) Is pvCommonCPP required when compiling against V4 modules?  The V4
> documentation has
> 
> "In addition for C++ there is the utility module pvCommonCPP. This
> contains boost, needed in particular for shared_pointers, and a
> microbenchmark framework. If you don't intend to use the latter then
> you may not need pvCommonCPP, depending on your compilers support for
> shared_pointers."
> 
> which suggests I wouldn't need it?  However, other V4 modules have
> been released against this version of the pvCommonCPP module and so
> the reference exists if I include any V4 modules.

It is possible to build the EPICS 4.5.0 release (available for download
but not yet announced here) without the pvCommonCPP 4.1.0 module if your
OS has boost installed, but I think you would have problems with earlier
versions when building pvAccessCPP because of that microbench library. I
suggest that you edit your pvCommonCPP/Makefile and comment out the lines
    DIRS += boostApp
and
    DIRS += testApp
then run 'make distclean; make' in the pvCommonCPP directory. This will
install just the microbench headers, so the system Boost will be used.
You will also have to rebuild the later V4 modules.

> 2) Should the other V4 modules have been released against this
> pvCommonCPP module in my case, or could they have been released
> without the reference as I have shared pointers available anyway?

As I said above, prior to the EPICS 4.5.0 release the pvAccessCPP module
needed the microbench headers and library.

> 3) If pvCommonCPP is required is there a way to specify which version
> of boost it can be compiled against?

The version of Boost shouldn't matter, we included a copy of Boost in
pvCommonCPP so users of OSs that don't come with it (Windows, OS-X,
RTEMS, VxWorks) wouldn't have to work out how to install Boost for
themselves. Unfortunately doing that has the effect you found when
someone links with code built using a different Boost version.

> 4) If using pvCommonCPP along with it's version of boost, does the
> whole set of boost libraries get built and installed?

No, the pvCommonCPP/boostApp source only installs the header files that
are needed; it doesn't build any Boost libraries since the V4 code only
uses the headers, not the libraries.

HTH,

- Andrew

-- 
Light thinks it travels faster than anything but it is wrong.
No matter how fast light travels, it finds the darkness has
always got there first, and is waiting for it.
    -- Terry Pratchett, Reaper Man

References:
Using V4 pvCommonCPP module with external boost library alan.greer

Navigate by Date:
Prev: Re: Subject: RE: To read single element from waveform record Andrew Johnson
Next: RE: Using V4 pvCommonCPP module with external boost library david.hickin
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017 
Navigate by Thread:
Prev: Using V4 pvCommonCPP module with external boost library alan.greer
Next: RE: Using V4 pvCommonCPP module with external boost library david.hickin
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017 
ANJ, 16 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·