blob: 00ee757ac2c4ffbce022abbfe9f1654480181e73 [file] [log] [blame]
Getting started with ndn-cxx
============================
Supported platforms
-------------------
ndn-cxx uses continuous integration and has been tested on the following
platforms:
- Ubuntu 12.04 (64-bit and 32-bit)
- Ubuntu 13.10 (64-bit and 32-bit)
- OS X 10.8
- OS X 10.9
ndn-cxx is known to work on the following platforms, although they are not officially
supported:
- Ubuntu 14.04
- Fedora >= 20
- FreeBSD >= 10.0
- Raspberry Pi
Prerequisites
-------------
Required:
~~~~~~~~~
- ``python`` >= 2.6
- ``libcrypto``
- ``libsqlite3``
- ``libcrypto++``
- ``pkg-config``
- Boost libraries >= 1.48
- OSX Security framework (on OSX platform only)
Following are the detailed steps for each platform to install the compiler, all necessary
development tools and libraries, and ndn-cxx prerequisites.
- OS X
Install Xcode. In Xcode Preferences > Downloads, install "Command
Line Tools".
If using MacPorts, dependencies can be installed using the following
commands::
sudo port install pkgconfig boost sqlite3 libcryptopp
- Ubuntu 12.04, Ubuntu 13.10
In a terminal, enter::
sudo apt-get install build-essential
sudo apt-get install libssl-dev libsqlite3-dev libcrypto++-dev
# For Ubuntu 12.04
sudo apt-get install libboost1.48-all-dev
# For Ubuntu 13.10
sudo apt-get install libboost-all-dev
- Fedora >=20
In a terminal, enter::
sudo yum install gcc-g++ git
sudo yum install openssl-devel sqlite-devel cryptopp-devel boost-devel
Optional:
~~~~~~~~~
To build tutorials, manpages, and API documentation the following
dependencies need to be installed:
- ``doxygen``
- ``graphviz``
- ``python-sphinx``
The following lists steps for common platforms to install these
prerequisites:
- On OS X 10.8 and 10.9 with MacPorts::
sudo port install doxygen graphviz py27-sphinx sphinx_select
sudo port select sphinx py27-sphinx
- On Ubuntu >= 12.04::
sudo apt-get install doxygen graphviz python-sphinx
- On Fedora >= 20::
sudp yum install doxygen graphviz python-sphinx
Build
-----
(These are instructions to build ndn-cxx. To do development of ndn-cxx
code and update the build system, see Development.)
To build in a terminal, change directory to the ndn-cxx root. Enter:
::
./waf configure
./waf
sudo ./waf install
This builds and installs the following items:
- ``<LIBPATH>/libndn-cxx.a``: static NDN C++ library
- ``<LIBPATH>/pkgconfig/libndn-cxx.pc``: pkgconfig file storing all
neccessary flags to build against the library. For example, if
pkgconfig or pkgconf package is installed and ``PKG_CONFIG_PATH`` is
configured properly (or ``<LIBPATH>/pkgconfig`` is a default path),
``pkgconfig --libs --clflags libndn-cxx`` will return all necessary
compile and link flags for the library.
- ``<BINPATH>/tlvdump``: a simple tool to dump contents of
TLV-formatted data
- ``<BINPATH>/ndncatchunks3``: a simplified equivalent to ndncatchunks2
in NDNx package
- ``<BINPATH>/ndnputchunks3``: a simplified equivalent to ndnputchunks2
in NDNx package
- ``<BINPATH>/ndnsec``: tool to manage NDN keys and certificates
- ``<BINPATH>/ndnsec-*``: convenience scripts for ``ndnsec`` tools
If configured with tests: ``./waf configure --with-tests``), the above
commands will also produce:
- ``build/unit-tests``: A unit test binary for the library
Documentation
-------------
ndn-cxx tutorials and API documentation can be built using the following
commands:
::
# Full set of documentation (tutorials + API) in build/docs
./waf docs
# Only tutorials in `build/docs`
./waf sphinx
# Only API docs in `build/docs/doxygen`
./waf doxgyen
Manpages are automatically created and installed during the normal build
process (e.g., during ``./waf`` and ``./waf install``), if
``python-sphinx`` module is detected during ``./waf configure`` stage.
By default, manpages are installed into ``${PREFIX}/share/man`` (where
default value for ``PREFIX`` is ``/usr/local``). This location can be
changed during ``./waf configure`` stage using ``--prefix``,
``--datarootdir``, or ``--mandir`` options.
For more details, refer to ``./waf --help``.
Development Build
-----------------
The following is the suggested configure commands for development build.
::
./waf configure --debug --with-tests
./waf
sudo ./waf install
In the development build all compiler optimizations are disabled by
default and all warnings are treated as error. The default behavior can
be overridden by setting ``CXXFLAGS`` environment variable before
running ``./waf configure``:
::
CXXFLAGS="-O1 -g3" ./waf configure --debug --with-tests
...