[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netCDF #FCH-479977]: Building netcdf c++ legacy library netcdf-cxx-4.2

Hi Mike,

> We are some questions about how to build the legacy C++ library for
> netCDF-4 support.
> We are using netcdf-cxx-4.2.
> Previously, when we built version 4.1.3 (all in one), we ran configure
> as follows:
> ./configure --prefix=/tmp/ncf --enable-netcdf-4 --disable-dap
> For building netcdf-cxx-4.2, --enable-netcdf-4 does not seem to apply.
> The only way I have been able to get it to support netCDF-4 and
> compression is to use:
> setenv CPPFLAGS "-g -I/tmp/ncf/include -DUSE_NETCDF4"
> ./configure --prefix=/tmp/ncf
> Is this the correct way to do this, or do you have a cleaner option?

Even doing it that way won't support compression, unless you are actually
calling C functions to set variable deflation levels.  The legacy C++ API
provides almost no support for netCDF-4, beyond specifying a mode for
creating a netCDF-4 file in the NcFile constructor.

If you need the per-variable compression supported by the netCDF-4 C or 
Fortran interfaces with real C++, you'll have to switch to the contributed
C++ netCDF-4 API.  It's methods for specifying deflation are documented here:


under the NcVar::setCompression and NcVar::getCompression methods.

However, as you probably know, the contributed C++ netCDF-4 is not backward
compatible with the old legacy C++ API, so it may require quite a bit of 

As far as building the legacy C++ library, this worked for me, after installing 
netCDF-4 C library under /usr/local:

  LD_LIBRARY_PATH=/usr/local/lib CPPFLAGS="-I/usr/local/include -DUSE_NETCDF4" 
./configure --enable-netcdf-4
  make -j check

In particular, I didn't have to disable DAP.


Russ Rew                                         UCAR Unidata Program
address@hidden                      http://www.unidata.ucar.edu

Ticket Details
Ticket ID: FCH-479977
Department: Support netCDF
Priority: Normal
Status: Closed

NOTE: All email exchanges with Unidata User Support are recorded in the Unidata inquiry tracking system and then made publicly available through the web. If you do not want to have your interactions made available in this way, you must let us know in each email you send to us.